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;
參考