### mysql where 条件大小写

在 MySQL 中，`WHERE` 条件的大小写敏感性取决于所使用的字符集和排序规则（collation）。

### 1. 默认行为

- **大小写不敏感**：在大多数情况下，MySQL 的默认字符集 `latin1`和 `utf8` 使用的排序规则（如 `latin1_swedish_ci` 或 `utf8_general_ci`）都是不区分大小写的。这意味着在这些排序规则下，`WHERE` 子句将不会区分大小写。例如：

  ```
  SELECT * FROM users WHERE username = 'JohnDoe';
  ```

  该查询将返回 `johnDoe`、`JOHNDOE` 和 `JohnDoe` 等所有变体。

### 2. 大小写敏感

- **使用大小写敏感的排序规则**：如果你想要 `WHERE` 条件区分大小写，可以使用大小写敏感的排序规则，例如 `latin1_bin` 或 `utf8_bin`。例如：

  ```
  SELECT * FROM users WHERE BINARY username = 'JohnDoe';
  ```

  

  使用 `BINARY` 关键字会强制 MySQL 将 `username` 列的值视为二进制字符串，从而实现大小写敏感的比较。

- **指定排序规则**：你也可以在查询中显式指定排序规则。例如：

  ```
  SELECT * FROM users WHERE username COLLATE utf8_bin = 'JohnDoe';
  ```

### 3. 修改表字符集

- utf8_general_ci --不区分大小写
- utf8_bin–区分大小写

```sql
ALTER TABLE temp_01 MODIFY COLUMN browser VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;
Query OK, 180 rows affected (0.01 sec)
Records: 180  Duplicates: 0  Warnings: 0
```



### 4. 总结

- 默认情况下，MySQL 的 `WHERE` 条件是大小写不敏感的，除非使用了二进制比较或指定了大小写敏感的排序规则。
- 如果想要进行大小写敏感的比较，可以使用 `BINARY` 关键字或者指定适当的排序规则。