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连接表