电竞比分网-中国电竞赛事及体育赛事平台

分享

mysql查詢時不區(qū)分大小寫

 Coder編程 2022-09-23 發(fā)布于北京

  一次偶然的機會,發(fā)現(xiàn)在登陸驗證時,改變用戶名的大小寫,同樣可以登錄成功,這是由于,當時使用的mysql數據庫對大小寫不敏感,查詢時總是能查詢到數據。一番查找資料,給出的原因是:在創(chuàng)建數據庫的時候,選擇了utf8_general_ci排序規(guī)則。

  創(chuàng)建數據庫時,需要同時選擇字符集和排序規(guī)則,字符集大家都知道是怎么回事,那排序規(guī)則干嘛用的呢?

  排序規(guī)則:是指對指定字符集下不同字符的比較規(guī)則。其特征有以下幾點:
    1、 兩個不同的字符集不能有相同的排序規(guī)則
    2、 兩個字符集有一個默認的排序規(guī)則
    3、 有一些常用的命名規(guī)則:如_ci結尾表示大小寫不敏感(caseinsensitive),_cs表示大小寫敏感(case sensitive),_bin表示二進制的比較(binary)。

  我用的是5.6版本的mysql,對于這個版本是不支持utf8的cs排序規(guī)則,如果要想對大小寫敏感,可以使用_bin的排序規(guī)則。

  與此同時,可以使用“show COLLATION;”查詢當前版本的數據庫支持的所有排序規(guī)則。使用 “show charset like 'utf8%';”進一步查看當前字符集的默認排序規(guī)則是什么。

  對于_ci的規(guī)則,表示不區(qū)分大小寫,如圖所示:

  對于使用_bin排序規(guī)則的查詢如下:

   對于已經創(chuàng)建好的表,可以是用如下命令進行修改(修改表結構的Collation屬性):

    ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;

    上面著重色部分分別表示表名和列名。

  

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多