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