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

SQL 模糊查詢完全指南:LIKE 萬用字元、逸出字元與跨資料庫差異

     編輯:關於SqlServer

基本語法

SELECT 欄位 FROM 資料表 WHERE 欄位 LIKE 條件;

四大萬用字元

符號意義範例匹配結果
%任意 0 或多字元LIKE '%三%'張三、張貓三、三腳貓、唐三藏
_單一任意字元LIKE '_三_'唐三藏 (三字中間是三)
[字元清單]括號內任一字元LIKE '[張李王]三'張三、李三、王三
[^字元清單]非括號內字元LIKE '[^張李王]三'趙三、孫三

進階模式範例

LIKE 'Mc%'           -- 以 Mc 開頭
LIKE '%inger'        -- 以 inger 結尾
LIKE '%en%'          -- 含 en
LIKE '_heryl'        -- 六字元、以 heryl 結尾 (Cheryl, Sheryl)
LIKE '[CK]ars[eo]n'  -- Carsen, Karsen, Carson, Karson
LIKE '[M-Z]inger'    -- 以 M-Z 開頭、inger 結尾
LIKE 'M[^c]%'        -- 以 M 開頭、第二字元非 c

實戰動態 SQL 範例

-- 郵遞區號查詢:依關鍵字搜尋地址/城市/省份
sql = "SELECT * FROM zipcode " & _
      "WHERE (address LIKE '%" & zipcode_key & "%') " & _
      "   OR (city LIKE '%" & zipcode_key & "%') " & _
      "   OR (province LIKE '%" & zipcode_key & "%') " & _
      "ORDER BY province, city, address"

預存程序中使用

SELECT * FROM Questions
WHERE QTitle LIKE '%[' + @KeyWord + ']%' AND IsFinish = @IsFinish;
-- 成對方括號為關鍵書寫格式

逸出特殊字元函數 (VBScript/ASP)

Function sqlencode(str)
    str = Replace(str, "[", "[[]")   ' 必須最先處理
    str = Replace(str, "_", "[_]")
    str = Replace(str, "%", "[%]")
    sqlencode = str
End Function

查詢前先呼叫 sqlencode(關鍵字),可正確搜尋含 %、_、[ 的字串。

Access vs SQL Server 差異

資料庫萬用字元範例
Access* (多字元), ? (單字元)LIKE '*b*'
SQL Server% (多字元), _ (單字元)LIKE '%b%'

重要: 程式碼中 (ADO/ADO.NET) 仍需使用 SQL Server 語法 (%、_),僅在 Access 查詢視窗測試時用 */?。

單引號記得加

WHERE name LIKE '老[^1-4]'  -- 字串常值必須用單引號包裹
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved