在本教學中,將學習如何使用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
運算符來檢查字串是否與指定的模式匹配。