常見需求:查詢欄位包含特定字元的資料。傳統寫法使用 LIKE '%c%',但 LIKE 在處理萬用字元 %、_、[ ] 時需額外跳脫,語法較繁瑣。
-- 找出 username 包含 'c' 的資料
SELECT * FROM table1 WHERE CHARINDEX('c', username) > 0;
%、_、| 等無需跳脫。
SELECT * FROM table1 WHERE CHARINDEX('%', username) > 0;
-- 或使用 ASCII 碼
SELECT * FROM table1 WHERE CHARINDEX(CHAR(37), username) > 0;
> 0 代表「找到」,= 0 代表「未找到」。CHARINDEX 內部實作高度優化,實際差異極小。若欄位有全文檢索索引,建議改用 CONTAINS 或 FREETEXT 獲得更佳效能。