MySQL 表内数据条件查询不区分大小写是因为排序规则的问题.
在MySQL中,InnoDB存储引擎默认的字符集是utf8,utf8mb4等,这些字符集再存储数据时没有指定排序规则的话,会默认使用 utf8_general_ci或utf8mb4_general_ci 作为表的排序规则,那么该表内的数据讲不区分大小写,这两种排序规则都是case-insensitive(不区分大小写)的.
改为 utf8_bin 或者 utf8mb4_bin 是区分大小写的
在MySQL中,表名和字段名默认是不区分大小写的。这意味着在查询和引用表和字段时,大小写不会影响执行结果。
例如,如果您创建了一个名为"mytable"的表,可以使用"SELECT * FROM mytable"或"SELECT * FROM MyTable"或"SELECT * FROM MYTABLE"等语句来查询该表。MySQL将不区分这些语句中的大小写。
如果您希望在MySQL中配置表名和字段名区分大小写,可以使用以下步骤:
打开MySQL配置文件(通常是my.cnf或my.ini)。
在[mysqld]部分中添加以下行:
sql
lower_case_table_names=0
lower_case_table_names = 0:表名区分大小写,且按照用户指定存储。
lower_case_table_names = 1:表不区分大小写,使用小写存储。
lower_case_table_names = 2:表不区分大小写,按照用户指定存储。
在不同系统上运行,会有不同的默认值👇
需要注意的是 在 Linux 系统中不支持设置为 2 当用户设置为 2 时,将被强制改为 0。
保存并关闭配置文件。
重启MySQL服务器。
这将使MySQL区分表名和字段名的大小写。例如,如果您创建了一个名为"MyTable"的表,则只能使用"SELECT * FROM MyTable"来查询该表,而使用其他大小写形式的语句将无法执行。