### 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` 关键字或者指定适当的排序规则。