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

Oracle ESCAPE 轉義字符完整指南:LIKE 查詢中通配符_% 的精確匹配

     編輯:Oracle 資料庫基礎

核心語法

WHERE column LIKE 'pattern' ESCAPE 'escape_char'

將 escape_char 後的字符視為字面量,預設常用 \,但可自定義(如 /、# 等)。

經典案例:查詢包含底線「_」的字符串

底線 _ 在 LIKE 中代表「任意單字符」,需轉義。

-- 測試數據
CREATE TABLE t11 (name VARCHAR2(20));
INSERT INTO t11 VALUES ('aa_a');
INSERT INTO t11 VALUES ('aaa');
COMMIT;

-- ❌ 錯誤:_ 被視為通配符,匹配 'aa_a'、'aaa'、'aab' 等
SELECT * FROM t11 WHERE name LIKE '%_%';

-- ✅ 正確:使用 \ 轉義 _
SELECT * FROM t11 WHERE name LIKE '%\_%' ESCAPE '\';
-- 結果:僅返回 'aa_a'

特殊場景:轉義字符本身出現在模式中

若搜尋字符串包含「/」,必須用「/」作為轉義字符(正斜槓同理):

SELECT * FROM wan_test WHERE psid LIKE '%//%' ESCAPE '/';
-- 匹配包含 "//" 的字符串

最佳實踐建議

  1. 統一規範:項目組統一約定轉義字符(建議 \),避免混用導致維護困難。
  2. 動態構建:應用層拼接 SQL 時,對用戶輸入的 %、_、轉義字符本身進行轉義處理。
  3. 性能提示:前置通配符 %abc% 無法使用索引範圍掃描,若頻繁查詢含通配符字面值的列,考慮功能性索引或 Oracle Text。
ESCAPE用法示意圖
ESCAPE 關鍵字使用示意
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved