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

SQL Server 以 CHARINDEX 取代 LIKE 提升查詢彈性

     編輯:關於SqlServer

背景

常見需求:查詢欄位包含特定字元的資料。傳統寫法使用 LIKE '%c%',但 LIKE 在處理萬用字元 %、_、[ ] 時需額外跳脫,語法較繁瑣。

CHARINDEX 替代方案

-- 找出 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 代表「未找到」。
  • 效能相近:兩者皆無法使用索引求值(非 SARGable),全表掃描成本相當;CHARINDEX 內部實作高度優化,實際差異極小。

適用情境

  • 需搜尋含萬用字元的字串。
  • 動態建構搜尋條件,避免字串跳脫錯誤。
  • 程式碼可讀性優先考量。

注意

若欄位有全文檢索索引,建議改用 CONTAINS 或 FREETEXT 獲得更佳效能。

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