_(通配符 - 匹配一个字符)(Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

下划线字符 _ 用于匹配涉及模式匹配的字符串比较操作(如 LIKEPATINDEX)中的任何单个字符。

示例

A:简单示例

以下示例返回以字母 m 开头且第三个字母为 d 的所有数据库名称。 下划线字符指定名称的第二个字符可以是任何字母。 model 数据库和 msdb 数据库均符合此条件。 master 数据库则不符合。

SELECT name FROM sys.databases
WHERE name LIKE 'm_d%';

下面是结果集。

name
-----
model
msdb

你可能有其他符合此条件的数据库。

可使用多个下划线来表示多个字符。 将 LIKE 条件更改为包含两个下划线 'm__% 会将 master 数据库包含在结果中。

B:更复杂的示例

以下示例使用 _ 运算符在 Person 表中查找名字由三个字母组成且以 an 结尾的所有人。

-- USE AdventureWorks2022;
  
SELECT FirstName, LastName  
FROM Person.Person  
WHERE FirstName LIKE '_an'  
ORDER BY FirstName;  

C:对下划线字符进行转义

以下示例会返回 db_ownerdb_ddladmin 等固定数据库角色的名称,但它也会返回 dbo 用户。

SELECT name FROM sys.database_principals
WHERE name LIKE 'db_%';

第三个字符位置处的下划线被视为通配符,它无法仅筛选出以字母 db_ 开头的主体。 若要对下划线进行转义,请将它括在括号中 [_]

SELECT name FROM sys.database_principals
WHERE name LIKE 'db[_]%';

现在已排除 dbo 用户。

下面是结果集。

name
-------------
db_owner
db_accessadmin
db_securityadmin
...

另请参阅

LIKE (Transact-SQL)
PATINDEX (Transact-SQL)
%(通配符 - 需匹配的字符)
[ ](通配符 - 需匹配的字符)
[^](通配符 - 无需匹配的字符)