查詢包含特定字元/字串的資料,常用 LIKE '%c%'。替代寫法:
SELECT * FROM table1 WHERE CHARINDEX('c', username) > 0;
CHARINDEX 內部高度優化,>0 判斷極快。LIKE 中 %、_、[ 為萬用字元,需轉義 (如 LIKE '%[%]%' 查含 %);CHARINDEX 直接搜尋字面值,無轉義困擾。CHARINDEX('%', username) > 0 或 CHARINDEX(CHAR(37), username) > 0 (ASCII 37 = %) 皆可直接查詢含 % 的列。-- 大小寫不敏感搜尋 (配合定序)
SELECT * FROM table1 WHERE CHARINDEX('c', username COLLATE Chinese_Taiwan_Stroke_CI_AI) > 0;
-- 找出第 N 次出現位置 (SQL 2016+)
SELECT CHARINDEX('c', username, start_location);
CHARINDEX 不會神奇加速無索引搜尋,但**處理特殊字元、可讀性、可攜性**上優於 LIKE。真正加速需建立全文索引或計算欄位+索引。