天天看點

Mysql常用sql語句(9)- like 模糊查詢

測試必備的Mysql常用sql語句系列

https://www.cnblogs.com/poloyy/category/1683347.html

前言

  • like應該是最常用的查詢條件了
  • 必須滴掌握!

like的文法格式

LIKE  '字元串'
NOT LIKE  '字元串'      
  • NOT:取反,不滿足指定字元串時比對
  • 字元串:可以是精确的字元串,也可以是包含通配符的字元串
  • LIKE支援 % 和 _ 兩個通配符

确認測試表裡有什麼資料,友善後面的栗子做對比

Mysql常用sql語句(9)- like 模糊查詢

% 通配符查詢的栗子

  •  % 應該是最常用的通配符了,它代表任意長度的字元串,包括0
  • 比如: a%b 表示以字母 a 開頭,以字母 b 結尾的任意長度的字元串;該字元串可以代表 ab、acb、accb、accrb 等字元串

查詢username字段包含test的記錄

select * from yyTest where username like "%test%";      
Mysql常用sql語句(9)- like 模糊查詢

查詢username字段開頭不為test且department字段等于seewo的記錄

select * from yyTest where username not like "test%" and department = "seewo";      
Mysql常用sql語句(9)- like 模糊查詢

知識點

比對的字元串必須加單引号或雙引号 like "%test%" 

_ 通配符查詢的栗子

  • _ 隻能代表單個字元,字元的長度不能等于0,即字元長度必須等于1;相對于 % 來說, _ 肯定沒這麼常用
  • 比如: a_b 可以代表 acb、adb、aub 等字元串

查詢username字段test開頭且後面隻跟一個字元結尾的記錄

select * from yyTest where username like "test_";      
Mysql常用sql語句(9)- like 模糊查詢

like 區分大小寫的栗子

  • 預設情況下,like比對的字元串是不區分大小寫的; like "test1" 和 like "TEST1" 比對的結果是一樣的
  • 如果需要區分大小寫,需要加入 binary 關鍵字

不會傳回任何記錄,test1和test2不會被比對到

select * from yyTest where username like binary "TEST_";      

使用轉義符的栗子

  • 如果查詢的字元串包含%,可以使用 \ 轉義符
  • 實際場景:搜尋功能,搜尋框隻輸入%看是否傳回所有記錄,如果是的話證明沒有做轉義可以提個優化項哦!

轉義符+通配符聯合使用的栗子

select * from yyTest where username like "%\%"      

使用通配符的注意點

  • 注意大小寫:不加binary關鍵字的話,大小寫是不敏感的
  • 注意頭部、尾部多餘的空格: " test% " 是不會比對到“test1”的
  • 注意NULL:通配符是不能比對到字段為NULL的記錄的
  • 不要過度使用通配符:因為Mysql對通配符的處理速度會比其他操作花費更長的時間
  • 在确定使用通配符後:除非絕對有必要,否則不要把它們用在字元串的開始處,把通配符置于搜尋模式的開始處,搜尋起來是最慢的。