用通配符進行過濾 LIKE操作符 通配符(wildcard) 用來匹配值的一部分的特殊字元。 搜索模式(search pattern) 由字面值、通配符或兩者組合構成的搜索條件。 搜索子句中使用通配符,必須使用LIKE操作符。LIKE指示MySQL,後跟的搜索模式利用通配符匹配而不是直接相等匹配進行 ...
用通配符進行過濾
LIKE操作符
通配符(wildcard) 用來匹配值的一部分的特殊字元。
搜索模式(search pattern) 由字面值、通配符或兩者組合構成的搜索條件。
搜索子句中使用通配符,必須使用LIKE操作符。LIKE指示MySQL,後跟的搜索模式利用通配符匹配而不是直接相等匹配進行比較。
百分號(%)通配符
%表示任何字元出現任意次數。
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE 'jet%';
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE '%anvil%';
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE 's%e';
註意:
- 除了一個或多個字元外,%還能匹配0個字元。%代表搜索模式中給定位置的0個、1個或多個字元。
- 註意尾空格:尾空格可能會幹擾通配符匹配。解決這個問題的一個簡單的辦法是在搜索模式最後附加一個%。一個更好的辦法是使用函數去掉首尾空格。
- 註意NULL: 雖然似乎%通配符可以匹配任何東西,但有一個例外,即NULL。
下劃線(_)通配符
下劃線(_)只匹配單個字元而不是多個字元:
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE '_ ton anvil';
使用通配符的技巧
通配符搜索的處理一般要比前面討論的其他搜索所花時間更長。這裡給出一些使用通配符要記住的技巧:
- 不要過度使用通配符。如果其他操作符能達到相同的目的,應該使用其他操作符。
- 在確實需要使用通配符時,除非絕對有必要,否則不要把它們用在搜索模式的開始處。把通配符置於搜索模式的開始處,搜索起來是最慢的。
- 仔細註意通配符的位置。如果放錯地方,可能不會返回想要的數據。