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

SQL 通配符完整指南:%、_、[] 與 MySQL REGEXP 實戰應用

     編輯:SQL 基礎

SQL 通配符完整指南


通配符用於 LIKE 條件中,替代字串中的任意字元,實現模糊查詢。標準 SQL 提供 %、_、[],MySQL 則以 REGEXP 正則表達式替代 [] 功能。


標準通配符對照表

通配符描述
%替代 0 個或多個字元
_替代單一個字元
[charlist]字元清單中任一單一字元(如 [abc]、[A-F])
[^charlist] / [!charlist]不在字元清單中的任一單一字元

注意: [] 語法在 SQL Server、Access、PostgreSQL 支援;MySQL、Oracle 需用 REGEXP / RLIKE。


演示資料庫: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:% 通配符 - url 以 'https' 開頭

SELECT * FROM Websites
WHERE url LIKE 'https%';

輸出結果:

範例 2:% 通配符 - url 包含 'oo'

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

輸出結果:

範例 3:_ 通配符 - name 任一字元開頭 + 'oogle'

SELECT * FROM Websites
WHERE name LIKE '_oogle';

輸出結果:

範例 4:_ 通配符 - 固定模式 'G_o_le'

SELECT * FROM Websites
WHERE name LIKE 'G_o_le';

輸出結果:

範例 5:MySQL 使用 REGEXP 替代 [charlist] - name 以 G、F、s 開頭

SELECT * FROM Websites
WHERE name REGEXP '^[GFs]';

輸出結果:

範例 6:REGEXP 字元範圍 - name 以 A-H 開頭

SELECT * FROM Websites
WHERE name REGEXP '^[A-H]';

輸出結果:

範例 7:REGEXP 排除範圍 - name 不以 A-H 開頭

SELECT * FROM Websites
WHERE name REGEXP '^[^A-H]';

輸出結果:


跨資料庫通配符對照

功能標準 / SQL ServerMySQLPostgreSQLOracle
多字元%%%%
單字元____
字元清單[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 索引。
  • REGEXP 通常不走索引:MySQL 8.0+ 對特定模式有優化,但一般視為全表掃描。
  • 大小寫敏感度:視資料庫 Collation 而定,MySQL 預設不區分大小寫(utf8mb4_general_ci)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved