今天在查字典表时发现该知识点,记下来。
不同于oracle,mysql查询不区分大小写,附上sql
oracle select * from user_tab_columns where TABLE_NAME = 'USERS' --如果使用'users'查不出结果
mysql SELECT * from information_schema.TABLES where TABLE_SCHEMA = 'test' --与使用'TesT'查询结果相同
区分大小写 SELECT * from information_schema.TABLES where binary TABLE_SCHEMA = 'test'
创建表时加入binary参数效果一样
测试 alter table xx modify x varchar(20) binary;
这时查询xx字段就能区分大小写了,而且不需要binary参数。
mysql> show variables like '%case%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | ON |
| lower_case_table_names | 1 |
+------------------------+-------+
试图修改时,失败
mysql> set lower_case_table_names = 2;
1238 - Variable 'lower_case_table_names' is a read only variable
通过修改my.ini文件,重启后发现
修改参数前后结果无变化。
mysql> select * from xx where x = 'DD';
+----+
| x |
+----+
| dd |
| Dd |
| DD |
+----+
3 rows in set
貌似该参数在不同操作系统之间,导数据时若不一致才会出问题。
不想总结,mysql版本5.5