-- 搜索包含 "5%" 的字符串,用 / 作為轉義符
WHERE ColumnA LIKE '%5/%%' ESCAPE '/'
-- 解析:首尾 % 為通配符,/ 後的 % 為字面字符 %
任意單字符可作轉義符(常用 \、/、|)。
-- 搜索包含 "-" 的字符串(避免被解析為範圍)
WHERE ColumnA LIKE '9[-]5'
-- 搜索包含 "[" 的字符串
WHERE ColumnA LIKE '%[%]%'
| 模式 | 匹配示例 | 說明 |
|---|---|---|
LIKE '5[%]' | 5% | 字面 % |
LIKE '5%' | 5 開頭任意字符串 | % 為通配符 |
LIKE '[_]n' | _n | 字面 _ |
LIKE '_n' | an, in, on... | _ 為單字符通配符 |
LIKE '[a-cdf]' | a,b,c,d,f | 範圍 + 離散字符 |
LIKE '[-acdf]' | -,a,c,d,f | - 在首位視為字面 |
LIKE '[[]' | [ | 字面 [ |
LIKE '[]]' | ] | 字面 ] |
-- 方法 1:ESCAPE \ (反斜槓)
SELECT strloginname, * FROM PersonalMember
WHERE strloginname LIKE '%\[%' ESCAPE '\'
-- 方法 2:ESCAPE / (正斜槓)
SELECT strloginname, * FROM PersonalMember
WHERE strloginname LIKE '%/[%' ESCAPE '/'
-- 方法 3:CHARINDEX 函數(無需通配符邏輯,性能更好)
SELECT strloginname, * FROM dbo.PersonalMember
WHERE CHARINDEX('[', strloginname) > 0
CHARINDEX、PATINDEX、LIKE 無通配符時走索引 Seek,含前導通配符才掃描。\ 或 /,避免混淆。%、_、[、]、- 等特殊字符時,[] 寫法最直觀。%、_、[ 轉義,防注入與邏輯錯誤。掌握 ESCAPE 與 [] 兩種機制,能精確表達「搜索包含通配符本身的字符串」這一需求。實際開發中,結合函數查詢與參數化執行,兼顧可讀性、性能與安全性。