問題說明:通過上面的語句,你會發現MySQL的like查詢是不區分大小寫的,因為我的失誤,把Joe寫成了joe才發現了這個東東吧。但是,有時候,我們需要區分大小寫的是,該怎麼辦呢?解決方法如下:
方法一(查詢時,指定區分大小寫)
很簡單,在like的後面加個binary就可以了,適用於表的結構不易改變的情況下。大多數人發現這個問題的時候,往往表的結構是不能改變的,所以,這種方法還是很好的。
接下來還有其他的方法,是在建表的時候,設定好區分大小的。
也可以在建表時,加以標識
create table table_name(
a varchar (20) binary
)
深入瞭解:
首先,你要了解的是:在MySQL中,對於Column Collate其約定的命名方法如下:
*_bin: 表示的是binary case sensitive collation,也就是說是區分大小寫的
*_cs: case sensitive collation,區分大小寫
*_ci: case insensitive collation,不區分大小寫
建表的過程中設定字元區分大小寫,然後插入3條記錄測試。
很多時候,我們的首次建表都是不全面的,我在想,能不能以後新增,修改表的特徵,這個是可以的。
就剛才那個student_web表吧。
但是,失敗了。我不知道為什麼,希望您可以給我幫助。
上面使用_bin來區分大小寫的,還可以使用
create table table_name (word VARCHAR(10)) CHARACTER SET latin1 COLLATE latin1_general_cs;
或者,在查詢時指定collation
建表時:mysql> create table table_name (word VARCHAR(10)) CHARACTER SET latin1;
查詢時:mysql> SELECT * FROM table_name WHERE word COLLATE latin1_bin LIKE 'F%'; 放在like前面
或:mysql> SELECT * FROM table_name WHERE word LIKE 'F%' COLLATE latin1_bin; 放在最後
或:mysql> SELECT * FROM case_test WHERE word LIKE 'F%' COLLATE latin1_general_cs;
參考文獻:http://www.cnblogs.com/pinnasky/archive/2012/09/11/2680264.html