兩種轉義方式
1. ESCAPE 關鍵字自訂轉義字元
-- 搜尋含 "5%" 的字串,以 / 為轉義字元
WHERE ColumnA LIKE '%5/%%' ESCAPE '/'
-- 前導/結尾 % 為通配符,/ 後的 % 視為字面字元
2. 方括號 [] 包裹特殊字元
| 模式 | 符合字串 |
LIKE '5[%]' | 5% |
LIKE '[_]n' | _n |
LIKE '[-acdf]' | -, a, c, d, f (連字號放第一個表字面) |
LIKE '[[]]' | [ |
LIKE '[]]' | ] |
實戰範例:查找含 [ 的登入名稱
-- 方法 1: ESCAPE \
SELECT * FROM PersonalMember WHERE strloginname LIKE '%\[%' ESCAPE '\'
-- 方法 2: ESCAPE /
SELECT * FROM PersonalMember WHERE strloginname LIKE '%/[%' ESCAPE '/'
-- 方法 3: CHARINDEX (不使用 LIKE,效能較好)
SELECT * FROM PersonalMember WHERE CHARINDEX('[', strloginname) > 0
建議
- 固定字元搜尋優先用
CHARINDEX / PATINDEX,可用索引 (視條件)。
- 動態模式必須用 LIKE 時,統一使用
ESCAPE '\',程式碼中將使用者輸入的 \, %, _, [, ] 替換為 \\, \%, \_, \[, \]。