【數據庫】MySQL查詢不區分大小寫的解決方案

當我們輸入不管大小寫都能查詢到數據,例如:輸入aaa或aaA,AAA都能查詢同樣的結果,說明查詢條件對大小寫不敏感。

通過查詢資料發現需要設置collate(校對),collate規則:

  • *_bin:表示binary case sensitive collation,也就是說是區分大小寫的;
  • *_cs: case sensitive collation,區分大小寫;
  • *_ci: case insensitive collation,不區分大小寫;

解決方法一

  • 可以將查詢條件用binary()括起來,比如:
select * from TableA where binary columnA ='aaa';
  • 可以修改該字段的collation 爲 binary,比如:
ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;

解決方法二

mysql查詢默認是不區分大小寫的 如:

select * from some_table where str=‘abc';
select * from some_table where str='ABC';

得到的結果是一樣的,如果我們需要進行區分的話可以按照如下方法來做:

  • 要讓mysql查詢區分大小寫,可以:
select * from some_table where binary str='abc'
select * from some_table where binary str='ABC'
  • 在建表時時候加以標識
create table some_table(
   str char(20) binary 
)

**原理:**對於CHAR、VARCHAR和TEXT類型,BINARY屬性可以爲列分配該列字符集的 校對規則。BINARY屬性是指定列字符集的二元 校對規則的簡寫。排序和比較基於數值字符值。因此也就自然區分了大小寫。

參考博客:https://www.cnblogs.com/thiaoqueen/p/8487643.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章