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

SQL 通配符、轉義字元與方括號完整使用指南

     編輯:關於SqlServer

一、搜尋包含通配符本身的字元

當要查找的字串本身含有 %、_、[、] 等通配符時,有兩種標準做法:

方法 1:自訂 ESCAPE 轉義字元

-- 找出含有「5%」的字串,指定 / 為轉義字元
WHERE ColumnA LIKE '%5/%%' ESCAPE '/';
-- 解析:前後 % 為通配符,/ 後的 % 視為字面字元

方法 2:方括號包裹通配符

-- 找出含有「-」字面字元(非範圍運算子)
WHERE ColumnA LIKE '9[-]5';

-- 方括號內常見用法對照表
LIKE '5[%]'     -- 字面 "5%"
LIKE '5%'       -- 5 開頭任意字串
LIKE '[_]n'     -- 字面 "_n"
LIKE '_n'       -- 任意單字元 + n (an, in, on...)
LIKE '[a-cdf]'  -- a,b,c,d,f 任一字元
LIKE '[-acdf]'  -- -,a,c,d,f 任一字元 (連字號置首視為字面)
LIKE '[[]'      -- 字面 "["
LIKE '[]]'      -- 字面 "]"

二、實戰範例:查找含「[」的登入帳號

假設資料表 PersonalMember,欄位 strloginname。

寫法 1:方括號法(最直觀)

SELECT strloginname, * 
FROM dbo.PersonalMember 
WHERE strloginname LIKE '%[[]%';

寫法 2:ESCAPE 法

SELECT strloginname, * 
FROM PersonalMember 
WHERE strloginname LIKE '%/[%' ESCAPE '/';

寫法 3:CHARINDEX 函數(不需理會通配符規則)

SELECT strloginname, * 
FROM dbo.PersonalMember 
WHERE CHARINDEX('[', strloginname) > 0;

寫法 4:空字串 ESCAPE(舊版相容)

SELECT strloginname, * 
FROM PersonalMember 
WHERE strloginname LIKE '%[%' ESCAPE '';

效能與可讀性建議

  • CHARINDEX:語意最清晰、不受 LIKE 模式影響、索引可用性同 LIKE '字首%'。
  • 方括號法:標準 SQL、可攜性佳,適合固定模式。
  • ESCAPE:動態組裝模式字串時較靈活。

依團隊編碼風格統一選擇,並加上註解說明轉義規則,避免後續維護誤判。

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