問(wèn)題說(shuō)明:通過(guò)上面的語(yǔ)句,你會(huì)發(fā)現(xiàn)MySQL的like查詢是不區(qū)分大小寫的,因?yàn)槲业氖д`,把Joe寫成了joe才發(fā)現(xiàn)了這個(gè)東東吧。但是,有時(shí)候,我們需要區(qū)分大小寫的是,該怎么辦呢?解決方法如下:
方法一(查詢時(shí),指定區(qū)分大小寫)
很簡(jiǎn)單,在like的后面加個(gè)binary就可以了,適用于表的結(jié)構(gòu)不易改變的情況下。大多數(shù)人發(fā)現(xiàn)這個(gè)問(wèn)題的時(shí)候,往往表的結(jié)構(gòu)是不能改變的,所以,這種方法還是很好的。
接下來(lái)還有其他的方法,是在建表的時(shí)候,設(shè)置好區(qū)分大小的。
也可以在建表時(shí),加以標(biāo)識(shí)
create table table_name(
a varchar (20) binary
)
深入了解:
首先,你要了解的是:在MySQL中,對(duì)于Column Collate其約定的命名方法如下:
*_bin: 表示的是binary case sensitive collation,也就是說(shuō)是區(qū)分大小寫的
*_cs: case sensitive collation,區(qū)分大小寫
*_ci: case insensitive collation,不區(qū)分大小寫
建表的過(guò)程中設(shè)置字符區(qū)分大小寫,然后插入3條記錄測(cè)試。
很多時(shí)候,我們的首次建表都是不全面的,我在想,能不能以后添加,修改表的特征,這個(gè)是可以的。
就剛才那個(gè)student_web表吧。
但是,失敗了。我不知道為什么,希望您可以給我?guī)椭?/p>
上面使用_bin來(lái)區(qū)分大小寫的,還可以使用
create table table_name (word VARCHAR(10)) CHARACTER SET latin1 COLLATE latin1_general_cs;
或者,在查詢時(shí)指定collation
建表時(shí):mysql> create table table_name (word VARCHAR(10)) CHARACTER SET latin1;
查詢時(shí):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;
新聞熱點(diǎn)
疑難解答
圖片精選