首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL 通配符、轉義符與方括號用法詳解

     編輯:MySQL 資料庫相關知識

通配符字符搜索兩種方法

方法一:ESCAPE 關鍵字自定義轉義符

-- 搜索包含 "5%" 的字符串,用 / 作為轉義符
WHERE ColumnA LIKE '%5/%%' ESCAPE '/'

-- 解析:首尾 % 為通配符,/ 後的 % 為字面字符 %

任意單字符可作轉義符(常用 \、/、|)。

方法二:方括號 [] 包裹通配符本身

-- 搜索包含 "-" 的字符串(避免被解析為範圍)
WHERE ColumnA LIKE '9[-]5'

-- 搜索包含 "[" 的字符串
WHERE ColumnA LIKE '%[%]%'

方括號通配符完整對照表

模式匹配示例說明
LIKE '5[%]'5%字面 %
LIKE '5%'5 開頭任意字符串% 為通配符
LIKE '[_]n'_n字面 _
LIKE '_n'an, in, on..._ 為單字符通配符
LIKE '[a-cdf]'a,b,c,d,f範圍 + 離散字符
LIKE '[-acdf]'-,a,c,d,f- 在首位視為字面
LIKE '[[]'[字面 [
LIKE '[]]']字面 ]

實戰案例:查找登錄名包含 "[" 的記錄

-- 方法 1:ESCAPE \ (反斜槓)
SELECT strloginname, * FROM PersonalMember
WHERE strloginname LIKE '%\[%' ESCAPE '\'

-- 方法 2:ESCAPE / (正斜槓)
SELECT strloginname, * FROM PersonalMember
WHERE strloginname LIKE '%/[%' ESCAPE '/'

-- 方法 3:CHARINDEX 函數(無需通配符邏輯,性能更好)
SELECT strloginname, * FROM dbo.PersonalMember
WHERE CHARINDEX('[', strloginname) > 0

最佳實踐建議

  1. 優先用函數: CHARINDEX、PATINDEX、LIKE 無通配符時走索引 Seek,含前導通配符才掃描。
  2. 統一轉義符: 團隊規範統一用 \ 或 /,避免混淆。
  3. 方括號場景: 需匹配 %、_、[、]、- 等特殊字符時,[] 寫法最直觀。
  4. 動態 SQL 參數化: 應用層拼接 LIKE 參數時,務必對用戶輸入的 %、_、[ 轉義,防注入與邏輯錯誤。

總結

掌握 ESCAPE 與 [] 兩種機制,能精確表達「搜索包含通配符本身的字符串」這一需求。實際開發中,結合函數查詢與參數化執行,兼顧可讀性、性能與安全性。

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