在本教學中,將學習如何使用SQL Server LIKE檢查字串是否與指定的模式匹配。
SQL Server LIKE運算符簡介
SQL Server LIKE是一個邏輯運算符,用於確定字串是否與指定的模式匹配。 模式可以包括常規字元和通配符。LIKE運算符用於:SELECT,UPDATE和DELETE語句的WHERE子句中,以根據模式匹配過濾行。
以下說明了SQL Server LIKE運算符的語法:
column | expression LIKE pattern [ESCAPE escape_character]
pattern
模式是要在列或運算式中搜索的字元序列。它可以包含以下有效通配符:
- 通配符百分比(
%):任何零個或多個字元的字串。 - 下劃線(
_)通配符:任何單個字元。 [list of characters]通配符:指定集合中的任何單個字元。[character-character]:指定範圍內的任何單個字元。[^]:不在列表或範圍內的任何單個字元。
通配符使LIKE運算符比等於(=)和不等於(!=)字串比較運算符更靈活。
轉義符
- 轉義字元指示
LIKE運算符將通配符視為常規字元。轉義字元沒有默認值,必須僅計算為一個字元。
如果列或運算式與指定的模式匹配,則LIKE運算符返回TRUE。要取消LIKE運算符的結果,可以使用NOT運算符,如下所示:
column | expression NOT LIKE pattern [ESCAPE escape_character]
SQL Server LIKE示例
請參閱示例資料庫中的以下customers表:

A. %(百分比)通配符示例
以下示例查找姓氏(last_name)以字母z開頭的客戶:
SELECT
customer_id,
first_name,
last_name
FROM
sales.customers
WHERE
last_name LIKE 'z%'
ORDER BY
first_name;
執行上面查詢語句,得到下結果 -
以下示例返回姓氏(last_name)以字串er結尾的客戶資訊:
SELECT
customer_id,
first_name,
last_name
FROM
sales.customers
WHERE
last_name LIKE '%er'
ORDER BY
first_name;
執行上面查詢語句,得到下結果 -
以下語句檢索姓氏(last_name)以字母t開頭並以字母s結尾的客戶:
SELECT
customer_id,
first_name,
last_name
FROM
sales.customers
WHERE
last_name LIKE 't%s'
ORDER BY
first_name;
執行上面查詢語句,得到下結果 -
B. _(下劃線)通配符示例
下劃線代表單個字元。 例如,以下語句返回第二個字元為字母u的客戶:
SELECT
customer_id,
first_name,
last_name
FROM
sales.customers
WHERE
last_name LIKE '_u%'
ORDER BY
first_name;
執行上面查詢語句,得到下結果 -
在上面查詢中,_u%模式解釋說明如下 -
- 第一個下劃線字元(
_)匹配任何單個字元。 - 第二個字母
u完全匹配字母u。 - 第三個字元
%匹配任何字元序列。
C. [list of characters]通配符示例
帶有字元列表的方括號,例如:[ABC]表示單個字元,必須是列表中指定的字元之一。
例如,以下查詢返回姓氏(last_name)中第一個字元為Y或Z的客戶:
SELECT
customer_id,
first_name,
last_name
FROM
sales.customers
WHERE
last_name LIKE '[YZ]%'
ORDER BY
last_name;
執行上面查詢語句,得到下結果 -
D. [character-character]通配符示例
具有字元範圍的方括號,例如[A-C]表示必須在指定範圍內的單個字元。
例如,以下查詢查找客戶,其中姓氏中的第一個字元是範圍A到C中的字母:
SELECT
customer_id,
first_name,
last_name
FROM
sales.customers
WHERE
last_name LIKE '[A-C]%'
ORDER BY
first_name;
執行上面查詢語句,得到下結果 -
E. [^字元列表或範圍]通配符示例
帶有插入符號(^)後跟範圍,例如[A-C]或字元列表,例如[^ABC]的方括號表示不在指定範圍或字元列表中的單個字元。
例如,以下查詢返回姓氏中的第一個字元不是範圍A到X中的字母的客戶資訊:
SELECT
customer_id,
first_name,
last_name
FROM
sales.customers
WHERE
last_name LIKE '[^A-X]%'
ORDER BY
last_name;
執行上面查詢語句,得到下結果 -
F. NOT LIKE運算符示例
以下示例使用NOT LIKE運算符查找名字中第一個字元不是字母A的客戶:
SELECT
customer_id,
first_name,
last_name
FROM
sales.customers
WHERE
first_name NOT LIKE 'A%'
ORDER BY
first_name;
執行上面查詢語句,得到下結果 -
在本教學中,學習了如何使用SQL Server LIKE運算符來檢查字串是否與指定的模式匹配。
