[ ] (通配符 - 要匹配的字符) (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics分析平台系统(PDW)Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库Microsoft Fabric 预览版中的 SQL 数据库

匹配指定范围内或者属于方括号 [ ] 所指定的集合中的任意单个字符。 可以在涉及模式匹配的字符串比较(例如,LIKEPATINDEX)中使用这些通配符。

Examples

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

A. Basic example

以下示例返回以 m 字母开头的名称。 [n-z] 指定第二个字母必须是 nz 范围内的某个字母。 百分比通配符 % 允许以第三个字符开头的任何字符或不允许字符。 model 数据库和 msdb 数据库均符合此条件。 master 数据库不符合条件,并被排除在结果集外。

SELECT name FROM sys.databases
WHERE name LIKE 'm[n-z]%';

结果集如下。

name
-----
model
msdb

可能安装了更多符合条件的数据库。

B. 更复杂的示例

以下示例使用 [] 运算符查找其地址中有四位邮政编码的所有 Adventure Works 雇员的 ID 和姓名。

SELECT e.BusinessEntityID, p.FirstName, p.LastName, a.PostalCode
FROM HumanResources.Employee AS e
INNER JOIN Person.Person AS p ON e.BusinessEntityID = p.BusinessEntityID
INNER JOIN Person.BusinessEntityAddress AS ea ON e.BusinessEntityID = ea.BusinessEntityID
INNER JOIN Person.Address AS a ON a.AddressID = ea.AddressID
WHERE a.PostalCode LIKE '[0-9][0-9][0-9][0-9]';

结果集如下。

EmployeeID      FirstName      LastName      PostalCode
----------      ---------      ---------     ----------
290             Lynn           Tsoflias      3000

C. 使用组合范围和单个字符的集

通配符集可包含单字符和范围。 以下示例使用 [] 运算符查找以数字或一系列特殊字符开头的字符串。

SELECT [object_id], OBJECT_NAME(object_id) AS [object_name], name, column_id
FROM sys.columns
WHERE name LIKE '[0-9!@#$.,;_]%';

结果集如下。

object_id     object_name                          name    column_id
---------     -----------                         ----  ---------
615673241     vSalesPersonSalesByFiscalYears      2002    5
615673241     vSalesPersonSalesByFiscalYears      2003    6
615673241     vSalesPersonSalesByFiscalYears      2004    7
1591676718    JunkTable                           _xyz  1