首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL LIKE 模糊查詢完全指南:語法、通配符與索引優化

     編輯:MySQL 資料庫相關知識

LIKE 基本語法與通配符

LIKE 用於模式匹配,支援兩個通配符:

  • %:匹配任意長度字串(含空字串)
  • _:匹配單一字元

常見模式範例

模式含義範例匹配值
'f%'以 f 開頭foo, fox, f
'%f'以 f 結尾barf, f
'%f%'包含 ffoo, barf, f, faf
'_f'第二字元為 faf, bf
'f_'第一字元 f,長度 2fa, fb

實戰範例

-- 查詢 user 中間包含 'f' 的記錄
SELECT * FROM jtsr WHERE user LIKE '%f%';
+----+------+------+------+
| id | user | jtsr | sex  |
+----+------+------+------+
|  4 | fff  | 4000 | 男   |
+----+------+------+------+

索引生效關鍵:通配符位置

⚠️ 核心規則: LIKE 只有在不以通配符開頭時才能使用索引。
-- ✅ 可用索引(前綴固定)
SELECT id FROM user WHERE user LIKE 'h%';

-- ❌ 無法用索引(前導通配符)
SELECT id FROM user WHERE user LIKE '%in';

優化策略

  1. 前綴索引:對長字串欄位建立前綴索引 INDEX idx_name_prefix (name(10)),配合 LIKE 'prefix%' 查詢。
  2. 全文索引:MySQL 5.6+ 支援 InnoDB 全文索引 FULLTEXT INDEX,配合 MATCH() AGAINST() 替代 LIKE '%keyword%'。
  3. 搜尋引擎:大規模模糊搜尋建議接入 Elasticsearch、Meilisearch 等專用引擎。
  4. 反向索引技巧:儲存反轉字串欄位 reversed_name,查詢後綴時改用 LIKE 'reversed_prefix%'。

ESCAPE 處理特殊字元

-- 查詢包含字面 '%' 的字串
SELECT * FROM t WHERE col LIKE '%\%%' ESCAPE '\\';

自訂跳脫字元避免與通配符衝突。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved