首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

SQL LIKE 模糊查詢:萬用字元 % _ 與 NOT LIKE 完整教學

     編輯:MySQL 綜合教學

LIKE 運算子用途

LIKE 運算子用於 WHERE 子句中,搜尋符合特定模式的資料。

語法

SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;

萬用字元說明

萬用字元意義範例匹配範例
%代表 0 個或多個任意字元'A%'Apple, Ant, A
_代表單一任意字元'A_'Ab, A1, Ax (不匹配 A 或 Abc)

實戰範例

假設 Persons 表資料:

P_IdLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger

1. 以 S 開頭的城市

SELECT * FROM Persons WHERE City LIKE 'S%';

結果:Sandnes (2 筆)

2. 以 s 結尾的城市

SELECT * FROM Persons WHERE City LIKE '%s';

結果:Sandnes (2 筆)

3. 包含 'tav' 的城市

SELECT * FROM Persons WHERE City LIKE '%tav%';

結果:Stavanger (1 筆)

4. 不包含 'tav' 的城市 (NOT LIKE)

SELECT * FROM Persons WHERE City NOT LIKE '%tav%';

結果:Sandnes (2 筆)

跳脫字元 ESCAPE

若要搜尋實際的 % 或 _ 字元,需使用跳脫字元:

-- 搜尋包含 "100%" 的字串
SELECT * FROM Products WHERE Description LIKE '%100\%%' ESCAPE '\';

-- 搜尋包含 "_" 的字串
SELECT * FROM Files WHERE Filename LIKE '%\_%' ESCAPE '\';

大小寫敏感度

  • 預設情況下,MySQL 的 LIKE 不區分大小寫 (取決於排序規則)
  • 強制區分大小寫:WHERE City LIKE BINARY 'S%'
  • 強制不區分:WHERE City LIKE 's%' COLLATE utf8_general_ci

效能提醒

  • LIKE '%keyword%' (前導萬用字元) 無法使用索引,會全表掃描
  • LIKE 'keyword%' (後置萬用字元) 可使用索引,效能較好
  • 大量資料模糊搜尋建議使用全文索引 或 Elasticsearch

MySQLi 範例

$mysqli = new mysqli("localhost", "user", "password", "my_db");
$keyword = "Sand";
$stmt = $mysqli->prepare("SELECT * FROM Persons WHERE City LIKE ?");
$param = $keyword . "%";
$stmt->bind_param("s", $param);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    echo $row['City'] . "<br>";
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved