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_Id | LastName | FirstName | Address | City |
|---|---|---|---|---|
| 1 | Hansen | Ola | Timoteivn 10 | Sandnes |
| 2 | Svendson | Tove | Borgvn 23 | Sandnes |
| 3 | Pettersen | Kari | Storgt 20 | Stavanger |
SELECT * FROM Persons WHERE City LIKE 'S%';
結果:Sandnes (2 筆)
SELECT * FROM Persons WHERE City LIKE '%s';
結果:Sandnes (2 筆)
SELECT * FROM Persons WHERE City LIKE '%tav%';
結果:Stavanger (1 筆)
SELECT * FROM Persons WHERE City NOT LIKE '%tav%';
結果:Sandnes (2 筆)
若要搜尋實際的 % 或 _ 字元,需使用跳脫字元:
-- 搜尋包含 "100%" 的字串 SELECT * FROM Products WHERE Description LIKE '%100\%%' ESCAPE '\'; -- 搜尋包含 "_" 的字串 SELECT * FROM Files WHERE Filename LIKE '%\_%' ESCAPE '\';
WHERE City LIKE BINARY 'S%'WHERE City LIKE 's%' COLLATE utf8_general_ciLIKE '%keyword%' (前導萬用字元) 無法使用索引,會全表掃描LIKE 'keyword%' (後置萬用字元) 可使用索引,效能較好$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>";
}