91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中varchar的大小寫字符比較

發布時間:2021-08-24 17:37:08 來源:億速云 閱讀:291 作者:chen 欄目:MySQL數據庫

這篇文章主要介紹“MySQL中varchar的大小寫字符比較”,在日常操作中,相信很多人在MySQL中varchar的大小寫字符比較問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MySQL中varchar的大小寫字符比較”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!


背景:
程序某日提出的SQL問題, 發現比較varchar字符串內容的時候, 大小寫不敏感;
測試環境還原問題, 環境構造如下:

  1. create table case_sen(id int primary key, name varchar(32)notnull);

  2. insert into case_sen values(1,'LucyLoveLily');

  3. insert into case_sen values(2,'lucylovelily');

  4. insert into case_sen values(3,'TomHateLarry');

  5. insert into case_sen values(4,'tomhatelarry');


效果如下:
MySQL中varchar的大小寫字符比較

實際上程序希望只有id=1的匹配到,  
同樣的問題也出現在like里面:
MySQL中varchar的大小寫字符比較

程序有問是不是lower_case_table_names的問題, 顯然.........不是 _(:з」∠)_

場景:
MySQL-5.7進行的還原, 實際上這個問題和版本沒有關系;


分析:
首先可以確認的是, 表內的數據并沒有問題, 該大寫的還是大寫, 該小寫的還是小寫;

那么問題最有可能出在MySQL的運算符"="和like上, 這兩類運算的原理可能因為某些原因/設置/導致不進行大小寫區分;

排查方向定下來以后, 試著用關鍵字comparison, case sensitive在文檔里面找找, 發現有一個章節提到了這個問題,并給出了一些示例;
PS: 章節名  B.5.4.1 Case Sensitivity in String Searches

文檔示例如圖:
MySQL中varchar的大小寫字符比較

對文檔的描述進行歸納:  非binary類型的string進行邏輯運算時, 會依據collate的配置來計算結果;

所以如果collate的設置對大小寫不敏感, 那么就會出現測試環境中的效果;

那么問題來了, utf8mb4的默認collate是什么?
MySQL中varchar的大小寫字符比較

發現是utf8mb4_general_ci, 通過對文檔內容的分析, 這個后綴ci代表的意思應該就是case-insensitive ;

那么試著換一下字符集的collate, 看看是不是能區分大小寫;
MySQL中varchar的大小寫字符比較

Bingo~~~

當然, 在列上面指定collate為utf8mb4_bin也可以達到一樣的目的;

PS: mysql的所有字符集默認都使用XXX_general_ci, 而有的字符集會有XXX_general_cs, 但是utf8是沒有的, 所以要使用utf8_bin;

PPS: 興趣閱讀: https://www.percona.com/live/europe-amsterdam-2015/sites/default/files/slides/PL_AMS_Unicode_Booking169_v3.pdf

PS: 注意索引喲, 5.7是可以的, <5.7可沒有試過 ╰(*°▽°*)╯
MySQL中varchar的大小寫字符比較

到此,關于“MySQL中varchar的大小寫字符比較”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁蒗| 沈阳市| 丰镇市| 恩平市| 漾濞| 清水县| 桃园县| 衡阳市| 时尚| 香河县| 绵竹市| 永康市| 宁城县| 信丰县| 兴仁县| 平山县| 虹口区| 冷水江市| 聂拉木县| 赞皇县| 武川县| 井陉县| 西乌珠穆沁旗| 宝应县| 龙岩市| 京山县| 伊川县| 铜鼓县| 临城县| 兴隆县| 丹凤县| 澄迈县| 太白县| 鄱阳县| 大邑县| 吴川市| 甘肃省| 哈密市| 弥渡县| 深泽县| 色达县|