通配符用於 LIKE 條件中,替代字串中的任意字元,實現模糊查詢。標準 SQL 提供 %、_、[],MySQL 則以 REGEXP 正則表達式替代 [] 功能。
| 通配符 | 描述 |
|---|---|
% | 替代 0 個或多個字元 |
_ | 替代單一個字元 |
[charlist] | 字元清單中任一單一字元(如 [abc]、[A-F]) |
[^charlist] / [!charlist] | 不在字元清單中的任一單一字元 |
注意: [] 語法在 SQL Server、Access、PostgreSQL 支援;MySQL、Oracle 需用 REGEXP / RLIKE。
+----+--------------+---------------------------+-------+---------+ | 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 | +----+--------------+---------------------------+-------+---------+
SELECT * FROM Websites WHERE url LIKE 'https%';
輸出結果:

SELECT * FROM Websites WHERE url LIKE '%oo%';
輸出結果:

SELECT * FROM Websites WHERE name LIKE '_oogle';
輸出結果:

SELECT * FROM Websites WHERE name LIKE 'G_o_le';
輸出結果:

SELECT * FROM Websites WHERE name REGEXP '^[GFs]';
輸出結果:

SELECT * FROM Websites WHERE name REGEXP '^[A-H]';
輸出結果:

SELECT * FROM Websites WHERE name REGEXP '^[^A-H]';
輸出結果:

| 功能 | 標準 / SQL Server | MySQL | PostgreSQL | Oracle |
|---|---|---|---|---|
| 多字元 | % | % | % | % |
| 單字元 | _ | _ | _ | _ |
| 字元清單 | [abc] | REGEXP '[abc]' | ~ '[abc]' | REGEXP_LIKE(col, '[abc]') |
| 字元範圍 | [A-F] | REGEXP '[A-F]' | ~ '[A-F]' | REGEXP_LIKE(col, '[A-F]') |
| 排除清單 | [^abc] / [!abc] | REGEXP '[^abc]' | ~ '[^abc]' | REGEXP_LIKE(col, '[^abc]') |
LIKE '%keyword' 無法使用索引,全表掃描。若頻繁需尾部匹配,考慮全文檢索或反轉欄位索引。LIKE 'prefix%' 可利用 B-tree 索引。utf8mb4_general_ci)。