适用于:
SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Microsoft Fabric SQL 数据库
下划线字符 _ 用于匹配涉及模式匹配的字符串比较操作(如
LIKE
和
PATINDEX
)中的任何单个字符。
A:简单示例
以下示例返回以字母
m
开头且第三个字母为
d
的所有数据库名称。 下划线字符指定名称的第二个字符可以是任何字母。
model
数据库和
msdb
数据库均符合此条件。
master
数据库则不符合。
SELECT name FROM sys.databases
WHERE name LIKE 'm_d%';
结果集如下。
-----
model
你可能有其他符合此条件的数据库。
可使用多个下划线来表示多个字符。 将 LIKE
条件更改为包含两个下划线 'm__%
会将 master 数据库包含在结果中。
B:更复杂的示例
以下示例使用 _ 运算符在 Person
表中查找名字由三个字母组成且以 an
结尾的所有人。
-- USE AdventureWorks2022;
SELECT FirstName, LastName
FROM Person.Person
WHERE FirstName LIKE '_an'
ORDER BY FirstName;
C:对下划线字符进行转义
以下示例会返回 db_owner
、db_ddladmin
等固定数据库角色的名称,但它也会返回 dbo
用户。
SELECT name FROM sys.database_principals
WHERE name LIKE 'db_%';
第三个字符位置处的下划线被视为通配符,它无法仅筛选出以字母 db_
开头的主体。 若要对下划线进行转义,请将它括在括号中 [_]
。
SELECT name FROM sys.database_principals
WHERE name LIKE 'db[_]%';
现在已排除 dbo
用户。
结果集如下。
-------------
db_owner
db_accessadmin
db_securityadmin
LIKE (Transact-SQL)
PATINDEX (Transact-SQL)
%(通配符 - 需匹配的字符)
[ ](通配符 - 需匹配的字符)
[^](通配符 - 无需匹配的字符)