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

SQL LIKE 條件與萬用字元完整解析

     編輯:關於SqlServer

LIKE 基本語法

SELECT * FROM table_name
WHERE column_name LIKE pattern;

專門用於字串型欄位的模糊比對,配合萬用字元可實現靈活的模式匹配。

常見萬用字元對照表

匹配類型符號範例說明
多字元%%abc%包含 "abc" 的任意字串(標準 SQL,所有主流 DB 支援)
多字元**abc*Access/Jet 引擎專用,等同 %;兩端同時用 * 會匹配所有行
單字元__abc標準 SQL,匹配任意單一字元
單字元??abcAccess/Jet 專用,等同 _
單一數字##abcAccess/Jet 專用,匹配 0-9 單一數字
字元範圍[a-z][a-f]bc匹配括號內任一字元
排除範圍[^a-z] 或 [!a-z][^0-9]bc匹配不在括號內的任一字元

關鍵差異:% vs *

標準 SQL 僅支援 %。在 Access/Jet 中:

  • LIKE '%明%' → 正確找出包含「明」的記錄。
  • LIKE '*明*' → 會回傳所有記錄,因為 * 在兩端時語義異常。

最佳實務:統一使用 % 作為多字元萬用字元,_ 作為單字元;僅在 Access 專案維護時被迫使用 */?,且避免兩端同時使用 *。

實戰範例

-- 1. 包含「明」
SELECT * FROM table1 WHERE name LIKE '%明%';

-- 2. 以「李」開頭
SELECT * FROM table1 WHERE name LIKE '李%';

-- 3. 含有數字
SELECT * FROM table1 WHERE name LIKE '%[0-9]%';

-- 4. 含有小寫字母
SELECT * FROM table1 WHERE name LIKE '%[a-z]%';

-- 5. 不含數字
SELECT * FROM table1 WHERE name LIKE '%[^0-9]%';

效能提示

  • LIKE '關鍵字%'(前綴匹配)可使用索引;LIKE '%關鍵字%' 導致全表掃描。
  • 大量模糊查詢建議使用全文檢索或搜尋引擎。
  • ESCAPE 子句可轉義萬用字元本身:LIKE '%[%]%' ESCAPE '\' 匹配含 % 的字串。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved