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