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

MySQL LIKE 模式匹配查詢完全指南:%、_、NOT LIKE 實戰範例

     編輯:MySQL 資料庫相關知識

通配符對照

符號含義範例匹配結果
%任意長度字串(含 0 字元)'a%'以 a 開頭
_單一字元'a_'a 開頭的兩字元字串
\%字面 %'100\%'字串 '100%'
\_字面 _'a\_b'字串 'a_b'

預設大小寫不敏感

MySQL 預設排序規則(如 `utf8_general_ci`)下,`LIKE` 不區分大小寫。需區分大小寫請用 COLLATE utf8_bin 或 BINARY 關鍵字:

SELECT * FROM t WHERE name LIKE 'abc' COLLATE utf8_bin;
SELECT * FROM t WHERE name LIKE BINARY 'abc';

實戰範例(student 表)

-- 1. 以 M 開頭
SELECT * FROM student WHERE name LIKE 'm%';

-- 2. 以 e 結尾
SELECT * FROM student WHERE name LIKE '%e';

-- 3. 任意位置包含 a
SELECT * FROM student WHERE name LIKE '%a%';

-- 4. 固定長度 5 字元
SELECT * FROM student WHERE name LIKE '_____';

-- 5. 排除包含 test 的記錄
SELECT * FROM student WHERE name NOT LIKE '%test%';

效能提醒

  • LIKE 'keyword%'(前綴匹配)可使用索引。
  • LIKE '%keyword' 或 LIKE '%keyword%' 會導致全表掃描,大表慎用。
  • 全文搜尋需求請改用 Fulltext Index 或 Elasticsearch。

進階:REGEXP 正則表達式

SELECT * FROM student WHERE name REGEXP '^[aeiou]';  -- 以母音開頭
SELECT * FROM student WHERE name REGEXP '[0-9]';     -- 含數字

功能更強但通常較慢,視情況使用。

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