| 模式 | 匹配字串 | 說明 |
LIKE '5[%]' | 5% | 方括號包裹 % 視為常規字元 |
LIKE '[_]n' | _n | 方括號包裹 _ 視為常規字元 |
LIKE '[a-cdf]' | a、b、c、d、f | 集合列舉 |
LIKE '[-acdf]' | -、a、c、d、f | 破折號置首視為常規字元 |
LIKE '[[]]' | [ | 左括號常規字元 |
LIKE '[]]' | ] | 右括號常規字元 |
LIKE 'abc[_]d%' | abc_d、abc_de... | 混合跳脫 |
ESCAPE 子句:自訂跳脫字元
-- 搜尋字串 "30%"(% 為常規字元)
WHERE comment LIKE '%30!%%' ESCAPE '!'
-- ! 為跳脫字元,!% 代表常規字元 %,尾部 % 為萬用字元
實戰範例:搜尋 "50% off..."
USE pubs;
GO
SELECT notes
FROM titles
WHERE notes LIKE '50!% off when 100 or more copies are purchased' ESCAPE '!';
GO
字元集合 [ ] 進階用法
範例 1:查找 Cheryl 或 Sheryl
SELECT au_lname, au_fname, phone
FROM authors
WHERE au_fname LIKE '[CS]heryl'
ORDER BY au_lname, au_fname;
範例 2:姓氏為 Carson/Carsen/Karson/Karsen
SELECT au_lname, au_fname, phone
FROM authors
WHERE au_lname LIKE '[CK]ars[eo]n'
ORDER BY au_lname, au_fname;
效能與最佳實踐
- 前導萬用字元殺傷力大:
LIKE '%keyword%' 無法使用索引(全表掃描)。若頻繁搜尋,考慮全文檢索或前綴索引(LIKE 'keyword%' 可用索引)。
- 字元集合優於多條件 OR:
LIKE '[ABC]%' 優於 LIKE 'A%' OR LIKE 'B%' OR LIKE 'C%'。
- 資料型別隱性轉換:非字串型別會隱性轉換為字串,可能導致索引失效,建議明確
CAST。
- Collation 影響比較規則:
CI (不區分大小寫) vs CS (區分大小寫)、AI (不區分重音) vs AS (區分重音)。
常見陷阱
- 誤以為
_ 匹配空白字元 — 它匹配「任意單一字元」,包含空白、數字、符號。
[^] 在集合外表示「非」,在集合內首位表示「常規字元 ^」,語境不同含義不同。
- 中文字元在
_ 佔一個字元位置,在 % 可匹配任意長度中文字串。
熟練掌握 LIKE 萬用字元與跳脫機制,能撰寫精準、高效的字串模式比對查詢。
- 上一篇文章: C++ 透過 OSQL 執行 SQL 腳本檔案:解決大量更新逾時與自動化部署難題
- 下一篇文章: SQL Server 2005 Service Broker 入門教學:非同步訊息佇列與可靠傳遞架構實作
Copyright ©
程式碼之家 All Rights Reserved