SQL Server Like運算符

在本教學中,將學習如何使用SQL Server LIKE檢查字串是否與指定的模式匹配。

SQL Server LIKE運算符簡介

SQL Server LIKE是一個邏輯運算符,用於確定字串是否與指定的模式匹配。 模式可以包括常規字元和通配符。LIKE運算符用於:SELECTUPDATEDELETE語句的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)中第一個字元為YZ的客戶:

SELECT
    customer_id,
    first_name,
    last_name
FROM
    sales.customers
WHERE
    last_name LIKE '[YZ]%'
ORDER BY
    last_name;

執行上面查詢語句,得到下結果 -

D. [character-character]通配符示例

具有字元範圍的方括號,例如[A-C]表示必須在指定範圍內的單個字元。

例如,以下查詢查找客戶,其中姓氏中的第一個字元是範圍AC中的字母:

SELECT
    customer_id,
    first_name,
    last_name
FROM
    sales.customers
WHERE
    last_name LIKE '[A-C]%'
ORDER BY
    first_name;

執行上面查詢語句,得到下結果 -

E. [^字元列表或範圍]通配符示例

帶有插入符號(^)後跟範圍,例如[A-C]或字元列表,例如[^ABC]的方括號表示不在指定範圍或字元列表中的單個字元。

例如,以下查詢返回姓氏中的第一個字元不是範圍AX中的字母的客戶資訊:

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運算符來檢查字串是否與指定的模式匹配。


上一篇: SQL Server數據查詢 下一篇: SQL Server連接表