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

SQL Server 通配符與跳脫字元完整指南:LIKE、ESCAPE、[%] 用法

     編輯:關於SqlServer

在 LIKE 條件式中,通配符代表任意字元,但有時我們需要搜尋字面上的「%」、「_」或「[」等特殊字元,此時需使用跳脫字元。本文系統說明 SQL Server 四種通配符、兩種跳脫語法與實戰範例。

四大通配符

符號意義範例模式匹配範例
%任意長度(含 0)字元'm%n'man, min, mon, moon, mn
_單一任意字元'm_n'man, min, mon(不含 mn)
[字元集合]集合中任一字元'[mz]' 或 '[m-z]'m, z / m~z 間任一字元
[^]非集合字元'[^mz]'除 m、z 外任一字元

跳脫字元兩種寫法

1. ESCAPE 子句(ANSI 標準,可自訂跳脫字元)

CREATE TABLE tb_TestTable (id INT IDENTITY, name NVARCHAR(64));
INSERT INTO tb_TestTable(name) VALUES('tiana'),('tiana5'),('tiana5%');

-- 尋找名稱包含字面 % 號的資料
SELECT name FROM tb_TestTable WHERE name LIKE '%/%' ESCAPE '/';
-- 結果:tiana5%

ESCAPE '/' 宣告 / 為跳脫字元,故 %/% 中第二個 % 被視為字面百分號,第一個 % 仍為通配符。

2. 方括號包裹法(SQL Server 專屬,無需 ESCAPE)

SELECT name FROM tb_TestTable WHERE name LIKE '%[%]';

[%] 直接告訴引擎此處 % 為字面字元。同理 [_]、[[]、[]] 皆可用。

適用於所有通配符與引號

  • 搜尋底線:LIKE '%[_]%' ESCAPE '/' 或 LIKE '%[_]%'
  • 搜尋左中括號:LIKE '%[[]]%'
  • 單引號、雙引號:同樣可用 ['']、[""] 或 ESCAPE 處理。

效能提醒

  • 開頭為通配符(LIKE '%abc%')無法使用索引,導致全表掃描。
  • 若頻繁需中間/尾部模糊比對,考慮全文檢索或計算欄位+索引。
  • 跳脫字元不影響 SARGability,關鍵在於模式字串首字元是否為常數非通配符。

快速參考卡

-- 含 % 號的產品代碼
WHERE ProductCode LIKE '%[%]%'           -- 方括號法
WHERE ProductCode LIKE '%/%' ESCAPE '/'  -- ESCAPE 法

-- 含底線的檔名
WHERE FileName LIKE '%[_]%'              -- 方括號法

-- 以 [ 開頭的字串
WHERE Col LIKE '[[]%'                    -- 方括號法

掌握通配符與跳脫字元,能精準撰寫模糊查詢,避免資料遺漏或誤判。

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