MySQL 查询是否区分大小写取决于多个因素,包括操作系统、字符集、排序规则以及表的具体配置。
操作系统因素:
字符集和排序规则:
_ci
结尾的排序规则不区分大小写(case insensitive)_cs
结尾的排序规则区分大小写(case sensitive)_bin
结尾的排序规则基于二进制比较,区分大小写-- 查看数据库的默认字符集和排序规则
SHOW VARIABLES LIKE 'character_set_database';
SHOW VARIABLES LIKE 'collation_database';
-- 查看特定表的字符集和排序规则
SHOW CREATE TABLE 表名;
数据库级别:
ALTER DATABASE 数据库名 COLLATE utf8_bin; -- 区分大小写
ALTER DATABASE 数据库名 COLLATE utf8_general_ci; -- 不区分大小写
表级别:
ALTER TABLE 表名 COLLATE utf8_bin;
列级别:
ALTER TABLE 表名 MODIFY 列名 VARCHAR(255) COLLATE utf8_bin;
即使使用不区分大小写的排序规则,也可以在查询时强制区分大小写:
SELECT * FROM 表名 WHERE BINARY 列名 = 'Value';
-- 或
SELECT * FROM 表名 WHERE 列名 COLLATE utf8_bin = 'Value';
lower_case_table_names
系统变量如果您需要针对特定场景的更详细建议,请提供更多关于您的使用环境和需求的信息。