首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 以 CHARINDEX 替代 LIKE '%...%' 查詢

     編輯:關於SqlServer

查詢包含特定字元/字串的資料,常用 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。真正加速需建立全文索引或計算欄位+索引。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved