1. 程式人生 > 實用技巧 >MySQL基礎之MySQL必知必會(八)用萬用字元進行過濾

MySQL基礎之MySQL必知必會(八)用萬用字元進行過濾

LIKE操作符

利用萬用字元可建立比較特定資料的搜尋模式。

萬用字元(wildcard): 用來匹配值的一部分的特殊字元。

搜尋模式(search pattern) 由字面值、萬用字元或兩組組合構成的搜尋條件。

萬用字元本身實際是SQL的WHERE子句中有特殊含義的字元。SQL支援幾種萬用字元。

為在搜尋中使用萬用字元, 必須使用LIKE操作符。LIKE指示MySQL, 後跟的搜尋模式利用萬用字元匹配而不是直接相等匹配進行比較。

百分號(%)萬用字元

%表示任何字元出現任意次數。

MariaDB [crashcourse]> SELECT prod_id, prod_name FROM
products 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]>

使用萬用字元的技巧

萬用字元搜尋的處理一般要比其他搜尋所花的時間更長

  • 不要過度使用萬用字元。如果其他操作符能達到相同的目的, 應該使用其他操作符
  • 在確定需要使用萬用字元時, 除非絕對必要, 否則不要把它們用在搜尋模式的開始處。把萬用字元置於搜尋模式的開始處, 搜尋起來是最慢的
  • 仔細注意萬用字元的位置。如果放錯了地方, 可能不會返回想要的資料