mysql对于大小写在windows上系统和Linux上系统不同。Linux默认状况下区分大小写,而在Windows下数据库名、表名、列名、别名都不区分大小写,即便设置lower_case_table_names=0,在查询时仍是不会区分大小写。只是在导入导出时会对大小写有区别。缘由是各类操做系统的文件系统对大小写实现上有所不一样。WINDOWS的文件系统查询时不区分文件大小写。mysql
Linux上大小写问题能够经过配置进行修改。sql
mysql> show variables like 'lower%'; | Variable_name | Value | +------------------------+-------+ | lower_case_file_system | OFF | | lower_case_table_names | 0 | +------------------------+-------+ 2 rows in set (0.01 sec)
lower_case_file_system:数据库所在的文件系统对文件名大小写敏感度。数据库
lower_case_table_names:表名大小写敏感度windows
修改my.cnf后重启数据库操作系统
lower_case_table_names=1
前提: 若是默认为大小写不敏感日志
SELECT * FROM table_name WHERE name LIKE 'a%'; SELECT * FROM table_name WHERE name LIKE 'A%';
其结果是同样的code
为了区分'A%'和'a%':blog
SELECT * FROM U WHERE binary name LIKE 'a%'; SELECT * FROM U WHERE binary name LIKE 'A%';
仅仅多了一个binary,就能够获得不一样的结果!ci
固然,若是须要建表时强制区分大小写,能够这么写:get
create table table_name( name varchar (20) binary );
还有一种方法就是在查询时指定collation
例如:
create table case_bin_test (word VARCHAR(10)) CHARACTER SET latin1 COLLATE latin1_bin; create table case_cs_test (word VARCHAR(10)) CHARACTER SET latin1 COLLATE latin1_general_cs; SELECT * FROM case_test WHERE word COLLATE latin1_bin LIKE 'F%'; SELECT * FROM case_test WHERE word LIKE 'f%' COLLATE latin1_bin;
参考