這篇文章主要介紹如何解決MySQL數(shù)據(jù)庫中sql語句的where條件中文本匹配問題,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
站在用戶的角度思考問題,與客戶深入溝通,找到五大連池網(wǎng)站設(shè)計與五大連池網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋五大連池地區(qū)。
Mysql數(shù)據(jù)庫中sql語句中where條件中文本匹配問題
問題描述
字段name類型為varchar時(CHAR,VARCHAR和TEXT情況都一樣),
語句一
select * from aaa where name='a';
語句二
select * from aaa where name='a ' ;
結(jié)果一樣:不能區(qū)分末尾是否有空格,
建議:
1、如果必須精確匹配(包括大小寫和末尾空格)建議轉(zhuǎn)換成二進(jìn)制比較,使用select * from aaa where name=BINARY'a ' ;
2、如果需要精確校驗?zāi)┪彩欠裼锌崭?,但是保留大小寫模糊匹?默認(rèn)校對規(guī)則_ci大小寫不敏感),建議增加length(name)就可以比較出長度來區(qū)分
3、如果需要精確校驗大小寫,但是保留末尾空格忽略,可以使用select * from aaa where name='a' collate utf8_cs; (字符為utf8)
4、默認(rèn)設(shè)置情況下,
a、where name='a';
b、where name='a ';(末尾有空格)
c、where name='A';
b、where name='A ';(末尾有空格)
四中情況匹配的結(jié)果是一樣的,
經(jīng)查詢官方文檔:
所有MySQL歸類都是PAD SPACE類型。 這意味著所有CHAR,VARCHAR和TEXT值都會進(jìn)行比較,而不考慮任何尾隨空格。 在此上下文中的“比較”不包括LIKE模式匹配運算符,其尾部空格是重要的。 例如:
mysql> CREATE TABLE names (myname CHAR(10));
Query OK, 0 rows affected (0.03 sec)
mysql> INSERT INTO names VALUES ('Monty');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT myname = 'Monty', myname = 'Monty ' FROM names; +------------------+--------------------+
| myname = 'Monty' | myname = 'Monty ' |
+------------------+--------------------+
| 1 | 1 |
+------------------+--------------------+
1 row in set (0.00 sec)
mysql> SELECT myname LIKE 'Monty', myname LIKE 'Monty ' FROM names; +---------------------+-----------------------+ |
myname LIKE 'Monty' | myname LIKE 'Monty ' |
+---------------------+-----------------------+
| 1 | 0 |
+---------------------+-----------------------+
1 row in set (0.00 sec)
對于所有MySQL版本都是如此,并且不受服務(wù)器SQL模式的影響。
注意
有關(guān)MySQL字符集和歸類的更多信息,請參閱第10章,字符集,歸類,Unicode。 有關(guān)存儲要求的更多信息,請參見第11.7節(jié)“數(shù)據(jù)類型存儲要求”。
對于尾隨填充字符被去除或比較忽略它們的情況,如果列的索引需要唯一值,則插入到僅與尾部填充字符數(shù)不同的列值中將導(dǎo)致重復(fù)鍵錯誤。 例如,如果一個表包含'a',則嘗試存儲'a'會導(dǎo)致重復(fù)鍵錯誤。
以上是“如何解決Mysql數(shù)據(jù)庫中sql語句的where條件中文本匹配問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享文章:如何解決Mysql數(shù)據(jù)庫中sql語句的where條件中文本匹配問題
文章網(wǎng)址:http://chinadenli.net/article18/giiidp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、網(wǎng)站排名、全網(wǎng)營銷推廣、品牌網(wǎng)站制作、網(wǎng)站營銷、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)