首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> SQL 基礎

SQL LIKE 操作符完整教學:模糊查詢語法、通配符搭配與實戰範例

     編輯:SQL 基礎

SQL LIKE 操作符完整教學


LIKE 用於 WHERE 子句中,依據模式進行字串模糊匹配。配合通配符 %(多字元)、_(單字元)可實現前綴、後綴、包含、固定格式等多種查詢需求。


基本語法

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;
  • pattern 為包含通配符的字串模式。
  • NOT LIKE 為反向匹配。
  • 大小寫敏感度視資料庫 Collation 而定。

演示資料庫:RUNOOB 範例資料

Websites 表

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘寶         | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鳥教程     | https://www.runoob.com/    | 4689  | CN      |
| 4  | 微博         | https://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow| https://stackoverflow.com/ | 0     | IND     |
+----+--------------+---------------------------+-------+---------+

實戰範例

範例 1:前綴匹配 - name 以 'G' 開頭

SELECT * FROM Websites
WHERE name LIKE 'G%';

輸出結果:

範例 2:後綴匹配 - name 以 'k' 結尾

SELECT * FROM Websites
WHERE name LIKE '%k';

輸出結果:

範例 3:包含匹配 - name 包含 'oo'

SELECT * FROM Websites
WHERE name LIKE '%oo%';

輸出結果:

範例 4:NOT LIKE - 排除包含 'oo' 的網站

SELECT * FROM Websites
WHERE name NOT LIKE '%oo%';

輸出結果:


通配符組合進階模式

模式含義範例匹配值
_abc任一字元 + abcXabc、1abc
a_ca + 任一字元 + cabc、axc、a1c
%abc%包含 abcabc、XabcY、abcXYZ
abc%以 abc 開頭abc、abcdef
%abc以 abc 結尾abc、XYZabc
a%b%ca...b...c 順序出現axbxc、abbbc

效能關鍵:索引與前置 %

  • LIKE 'prefix%':可使用 B-tree 索引(範圍掃描)。
  • LIKE '%suffix' 或 LIKE '%middle%':無法使用索引,必須全表掃描。
  • 大量資料且頻繁需中間/後綴匹配時,建議:
    • MySQL:全文檢索 FULLTEXT 索引 + MATCH() AGAINST()。
    • PostgreSQL:pg_trgm 擴展 + GIN 索引。
    • SQL Server:全文檢索或計算欄位反轉索引。
    • Elasticsearch / OpenSearch 等專用搜尋引擎。

實務提醒

  • 字串字面值需用單引號:LIKE 'abc%'。
  • 若模式本身含 % 或 _ 需當作字面字元,使用轉義字元:LIKE '100\%' ESCAPE '\'(語法視資料庫而定)。
  • LIKE 僅適用字串類型(CHAR、VARCHAR、TEXT 等),數值/日期需先轉型。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved