目次
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
運算子中,%
和 _
具有萬用字元的特殊意義。若要將它們作為一般字元搜尋,需使用跳脫字元。
跳脫方法
- 使用跳脫字元的範例
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
運算子可能會降低效能。特別是當%
放在開頭時,索引將失效,導致查詢速度變慢。
正確使用索引
- 為了提升效能,請視情況建立適當的索引。
8. MySQL LIKE 的常見應用
MySQL 的 LIKE
運算子常用於以下情境:
搜尋客戶
- 根據客戶名稱或電子郵件進行搜尋。
搜尋產品代碼
- 根據產品代碼的部分內容搜尋產品。
9. 總結
LIKE
運算子是 MySQL 中功能強大的模式比對工具。本文從基本語法到進階用法,以及效能優化等面向,進行了完整解說。為了更有效率地搜尋與操作資料庫,請善用 LIKE
運算子。
10. 常見問題
Q1: LIKE
與 =
有何不同?
A1: =
用於完全相符搜尋,而 LIKE
用於部分相符與模式比對。
Q2: LIKE
會區分大小寫嗎?
A2: 在 MySQL 預設設定中,LIKE
不會區分大小寫。但可使用 BINARY
關鍵字來區分。
Q3: LIKE
運算子能用於數值嗎?
A3: 一般用於字串,但若數值以字串形式儲存,仍可使用。