MySQL LIKE 運算子完整指南:語法、萬用字元與高效搜尋技巧

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: 一般用於字串,但若數值以字串形式儲存,仍可使用。