1. MySQL LIKE 的概要
MySQL 的 LIKE
運算子用於在資料庫中搜尋符合特定模式的數據。LIKE
可在 SQL 的 WHERE
子句中使用,根據部分或整個字串設定搜尋條件。例如,您可以用來搜尋「以某個字元開頭的名稱」或「包含特定字元的產品代碼」等資料。
LIKE 運算子的用途
- 部分匹配搜尋
- 特定模式匹配
- 數據過濾
此運算子專為模式匹配而設計,在高效搜尋與操作資料庫數據時不可或缺。
2. MySQL LIKE 的基本語法
在 MySQL 中使用 LIKE
運算子的基本語法如下:
SELECT 欄位名稱 FROM 資料表名稱 WHERE 欄位名稱 LIKE '模式';
LIKE 的使用範例
- 搜尋以特定字元開頭的數據
SELECT * FROM users WHERE name LIKE 'A%';
- 搜尋包含特定字串的數據
SELECT * FROM products WHERE product_code LIKE '%123%';
LIKE
運算子可與 %
及 _
等萬用字元結合使用,使搜尋更具彈性。

3. LIKE 運算子使用的萬用字元
在 LIKE
運算子中,可以使用萬用字元來指定搜尋模式。MySQL 支援的主要萬用字元如下:
%
萬用字元
- 匹配任意長度的字串(包含 0 個字元)
SELECT * FROM users WHERE email LIKE '%@example.com';
此範例將搜尋所有以@example.com
結尾的電子郵件地址。
_
萬用字元
- 匹配任意單個字元
SELECT * FROM products WHERE product_code LIKE '_A%';
此範例將搜尋所有第二個字元為A
的產品代碼。
適當使用萬用字元可以有效過濾資料庫內的數據,提高搜尋效率。
4. 模式匹配技巧
透過 LIKE
運算子與萬用字元的組合,可以實現各種模式匹配。
前綴匹配(Starts With)
- 搜尋以特定字元開頭的數據
SELECT * FROM customers WHERE name LIKE 'John%';
此範例將搜尋所有名稱以John
開頭的顧客。
後綴匹配(Ends With)
- 搜尋以特定字元結尾的數據
SELECT * FROM files WHERE filename LIKE '%.pdf';
此範例將搜尋所有以.pdf
結尾的檔案名稱。
部分匹配(Contains)
- 搜尋包含特定字串的數據
SELECT * FROM documents WHERE content LIKE '%MySQL%';
此範例將搜尋所有內容包含MySQL
的文件。
5. LIKE 運算子中的特殊字元轉義
在 LIKE
運算子中,%
和 _
具有特殊意義作為萬用字元。如果希望將它們視為普通字元,需要使用跳脫字元(Escape Character)。
轉義方法
- 使用跳脫字元來進行搜尋
SELECT * FROM filenames WHERE filename LIKE 'file!_%' ESCAPE '!';
此查詢將搜尋所有以file_
開頭的檔案名稱。由於_
通常作為萬用字元使用,這裡透過!
作為跳脫字元,使_
被視為普通字元。
6. LIKE 運算子的進階應用
LIKE
運算子可以與其他 SQL 語法結合,實現更高級的搜尋功能。
與 JOIN 搭配使用
- 搜尋關聯表中的數據
SELECT orders.id, customers.name FROM orders JOIN customers ON orders.customer_id = customers.id WHERE customers.name LIKE '%Smith%';
此範例將搜尋所有顧客名稱包含Smith
的訂單。
使用 NOT LIKE 進行排除
- 搜尋不符合特定模式的數據
SELECT * FROM emails WHERE address NOT LIKE '%@spam.com';
此範例將排除所有以@spam.com
結尾的電子郵件地址。

7. 使用 LIKE 運算子的最佳實踐
在使用 LIKE
運算子時,有一些最佳實踐和注意事項可以幫助提升效能。
對效能的影響
- 當使用
LIKE
運算子搜尋大量數據時,查詢效能可能會下降。特別是當%
放在字串開頭時,索引將無法發揮作用,導致查詢速度變慢。
適當使用索引
- 為了提升效能,可以考慮建立索引(INDEX),以加快查詢速度。
8. MySQL LIKE 的常見使用場景
MySQL 的 LIKE
運算子可應用於各種場景,例如:
搜尋顧客資訊
- 根據顧客名稱或電子郵件地址進行搜尋。
搜尋產品代碼
- 根據產品代碼的部分內容來篩選相關產品。
9. 總結
LIKE
運算子是 MySQL 中強大的模式匹配工具。本文介紹了從基本語法到進階應用,並涵蓋了效能最佳化策略。透過適當使用 LIKE
運算子,可以有效提升資料庫的搜尋與操作效率。

10. 常見問題
Q1: LIKE
和 =
之間的差異是什麼?
A1: =
用於精確匹配,而 LIKE
可用於部分匹配或模式匹配。
Q2: LIKE
運算子區分大小寫嗎?
A2: 在 MySQL 的預設設定下,LIKE
運算子不區分大小寫。不過,可以使用 BINARY
關鍵字來區分大小寫。
Q3: LIKE
運算子可以用於數值嗎?
A3: 通常 LIKE
用於字串,但如果數值以字串形式儲存,也可以使用 LIKE
進行搜尋。