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