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


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

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

 

前言

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

 

like的語法格式

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

 

確認測試表里有什么數據,方便后面的栗子做對比

 

% 通配符查詢的栗子

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

查詢username字段包含test的記錄

select * from yyTest where username like "%test%";

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

select * from yyTest where username not like "test%" and department = "seewo";

知識點

匹配的字符串必須加單引號或雙引號 like "%test%" 

 

_ 通配符查詢的栗子

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

查詢username字段test開頭且后面只跟一個字符結尾的記錄

select * from yyTest where username like "test_";

 

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對通配符的處理速度會比其他操作花費更長的時間
  • 在確定使用通配符后:除非絕對有必要,否則不要把它們用在字符串的開始處,把通配符置於搜索模式的開始處,搜索起來是最慢的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM