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

Applies to:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

使用下划线字符 _ 匹配字符串比较作中涉及模式匹配的任何单个字符,例如 LIKEPATINDEX

Examples

本文中的代码示例使用 AdventureWorks2022AdventureWorksDW2022 示例数据库,可以从 Microsoft SQL Server 示例和社区项目 主页下载该数据库。

A. Basic example

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

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

结果集如下。

name
-----
model
msdb

你可能具有满足此条件的其他数据库。

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

B. 更复杂的示例

以下示例使用_运算符查找表中所有以三个字母名字结尾an的人员Person

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

C. 转义下划线字符

The following example returns the names of the fixed database roles like db_owner and db_ddladmin, but it also returns the dbo user.

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
...