在本教程中,将学习如何使用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
运算符来检查字符串是否与指定的模式匹配。