MySQL基礎之MySQL必知必會(八)用萬用字元進行過濾
阿新 • • 發佈:2020-07-23
LIKE操作符
利用萬用字元可建立比較特定資料的搜尋模式。
萬用字元(wildcard): 用來匹配值的一部分的特殊字元。
搜尋模式(search pattern) 由字面值、萬用字元或兩組組合構成的搜尋條件。
萬用字元本身實際是SQL的WHERE子句中有特殊含義的字元。SQL支援幾種萬用字元。
為在搜尋中使用萬用字元, 必須使用LIKE操作符。LIKE指示MySQL, 後跟的搜尋模式利用萬用字元匹配而不是直接相等匹配進行比較。
百分號(%)萬用字元
%表示任何字元出現任意次數。
MariaDB [crashcourse]> SELECT prod_id, prod_name FROMproducts WHERE prod_name LIKE 'jet%'; +---------+--------------+ | prod_id | prod_name | +---------+--------------+ | JP1000 | JetPack 1000 | | JP2000 | JetPack 2000 | +---------+--------------+ 2 rows in set (0.002 sec) MariaDB [crashcourse]>
在執行這條語句的時候, 將檢索任意以jet開頭的詞。
萬用字元可在搜尋模式中任意位置使用, 並且可以使用多個萬用字元。
注意尾空格
尾空格可能會干擾萬用字元匹配。
注意NULL
雖然似乎%萬用字元可以匹配任何東西, 但是不能匹配NULL
下劃線(_)萬用字元
下劃線的用途與%一樣。但下劃線只匹配單個字元而不是多個字元
MariaDB [crashcourse]> SELECT prod_id, prod_name FROM products WHERE prod_name LIKE '_ ton anvil'; +---------+-------------+ | prod_id | prod_name | +---------+-------------+ | ANV02 | 1 ton anvil || ANV03 | 2 ton anvil | +---------+-------------+ 2 rows in set (0.000 sec) MariaDB [crashcourse]>
使用萬用字元的技巧
萬用字元搜尋的處理一般要比其他搜尋所花的時間更長
- 不要過度使用萬用字元。如果其他操作符能達到相同的目的, 應該使用其他操作符
- 在確定需要使用萬用字元時, 除非絕對必要, 否則不要把它們用在搜尋模式的開始處。把萬用字元置於搜尋模式的開始處, 搜尋起來是最慢的
- 仔細注意萬用字元的位置。如果放錯了地方, 可能不會返回想要的資料