php mysql 查询 区分大小写_MySQL查询字符串时区分大小写
MySQL在查詢字符串時(shí)是大小寫(xiě)不敏感的,在編繹MySQL時(shí)一般以ISO-8859字符集作為默認(rèn)的字符集,這個(gè)字符集對(duì)大小寫(xiě)不敏感,因此在比較過(guò)程中中文編碼字符大小寫(xiě)轉(zhuǎn)換造成了這種現(xiàn)象。
方法一:
解決方法是對(duì)于包含中文的字段加上"binary"屬性,使之作為二進(jìn)制比較,例如將"name char(10)"改成"name char(10)binary"。
方法二:
如果你使用源碼編譯MySQL,可以編譯MySQL時(shí)使用--with--charset=gbk 參數(shù),這樣MySQL就會(huì)直接支持中文查找和排序了。
方法三:
可以使用 Mysql 的 locate 函數(shù)來(lái)判斷。以上述問(wèn)題為例,使用方法為:
SELECT * FROM table WHERE locate(field,'李') > 0;
方法四:
把您的Select語(yǔ)句改成這樣,SELECT * FROM TABLE WHERE FIELDS LIKE BINARY '%FIND%'即可!
方法五:
如果你在Windows下使用已經(jīng)編譯好的MySQL,可以修改My.ini中的字符集選項(xiàng)。
default-character-set = gb2312
在默認(rèn)情況下,mysql搜索不區(qū)分大小寫(xiě)(但某些字符集始終區(qū)分大小寫(xiě),如czech)。這意味著,如果你使用col_name LIKE 'a%'進(jìn)行搜索,你將獲得以A或a開(kāi)始的所有列。
如果打算使搜索區(qū)分大小寫(xiě),請(qǐng)確保操作數(shù)之一具有區(qū)分大小寫(xiě)的或二進(jìn)制校對(duì)。例如,如果你正在比較均適用latin1字符集的列和字符串,可使用COLLATE操作符,使1個(gè)操作數(shù)具有l(wèi)atin1_general_cs或latin1_bin校對(duì)特性。例如:
col_name COLLATE latin1_general_cs LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_general_cs
col_name COLLATE latin1_bin LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_bin
如果希望總是以區(qū)分大小寫(xiě)的方式處理列,可使用區(qū)分大小寫(xiě)的或二進(jìn)制校對(duì)聲明它。建表時(shí)候使用BINARY標(biāo)示。
CREATE TABLE T(
A VARCHAR(10) BINARY
);
如果是自己的服務(wù)器使用win系統(tǒng),方法五是最好的方法!如果是linux系統(tǒng),可以使用方法二!如果不是自己的機(jī)子,可以使用方法一,這樣你的用戶名是嚴(yán)格區(qū)分大小寫(xiě)的!
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的php mysql 查询 区分大小写_MySQL查询字符串时区分大小写的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: sqlmap mysql案例_sqlma
- 下一篇: kinux mysql报错10038_n