您好,登錄后才能下訂單哦!
通配符的分類:
%百分號通配符: 表示任何字符出現任意次數 (可以是0次).
_下劃線通配符:表示只能匹配單個字符,不能多也不能少,就是一個字符.
like操作符:
LIKE作用是指示mysql后面的搜索模式是利用通配符而不是直接相等匹配進行比較.
注意: 如果在使用like操作符時,后面的沒有使用通用匹配符效果是和=一致的,SELECT * FROM products WHERE products.prod_name like '1000';只能匹配的結果為1000,而不能匹配像JetPack 1000這樣的結果.
1)%通配符使用:
匹配以"yves"開頭的記錄:(包括記錄"yves")
SELECT * FROM products WHERE products.prod_name like 'yves%';
匹配包含"yves"的記錄(包括記錄"yves")
SELECT * FROM products WHERE products.prod_name like '%yves%';
匹配以"yves"結尾的記錄(包括記錄"yves",不包括記錄"yves ",也就是yves后面有空格的記錄,這里需要注意)
SELECT * FROM products WHERE products.prod_name like '%yves';
2)_通配符使用:
SELECT * FROM products WHERE products.prod_name like '_yves';
匹配結果為: 像"yyves"這樣記錄.
SELECT * FROM products WHERE products.prod_name like 'yves__';
匹配結果為: 像"yvesHe"這樣的記錄.(一個下劃線只能匹配一個字符,不能多也不能少)
注意事項:
注意大小寫,在使用模糊匹配時,也就是匹配文本時,mysql是可能區分大小的,也可能是不區分大小寫的,這個結果是取決于用戶對MySQL的配置方式.如果是區分大小寫,那么像YvesHe這樣記錄是不能被"yves__"這樣的匹配條件匹配的.
注意尾部空格,"%yves"是不能匹配"heyves "這樣的記錄的.
注意NULL,%通配符可以匹配任意字符,但是不能匹配NULL,也就是說SELECT * FROM products WHERE products.prod_name like '%';是匹配不到products.prod_name為NULL的的記錄.
技巧與建議:
正如所見, MySQL的通配符很有用。但這種功能是有代價的:通配符搜索的處理一般要比前面討論的其他搜索所花時間更長。這里給出一些使用通配符要記住的技巧。
不要過度使用通配符。如果其他操作符能達到相同的目的,應該 使用其他操作符。
在確實需要使用通配符時,除非絕對有必要,否則不要把它們用 在搜索模式的開始處。把通配符置于搜索模式的開始處,搜索起 來是最慢的。
仔細注意通配符的位置。如果放錯地方,可能不會返回想要的數.
補充知識:MySQL LIKE模糊查詢 % _ 通配符會查詢出所有數據
最近寫了一批分頁查詢 測試查詢出用 _ % 這兩個特殊字符會查詢出所有數據 查詢條件不起作用 結果不是測試想要的
后來發現這兩個特殊字符在sql like查詢 中是通配符 可以代表任意字符
最后想出了2種解決方案
1. 轉義 這兩個特殊字符 就可以實現
2.使用內部函數INSTR,代替傳統的LIKE方式查詢,并且速度更快。
INSTR()函數返回字符串中子字符串第一次出現的位置。如果在str中找不到子字符串,則INSTR()函數返回零(0)。
下面說明了INSTR函數的語法。
select * from user where INSTR(name,'小明');
以上這篇Mysql| 使用通配符進行模糊查詢詳解(like,%,_)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。