适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
分析平台系统(PDW)
Microsoft Fabric 中的 SQL 分析终结点
Microsoft Fabric 中的仓库
Microsoft Fabric 预览版中的 SQL 数据库
匹配指定范围内或者属于方括号 [ ] 所指定的集合中的任意单个字符。 可以在涉及模式匹配的字符串比较(例如,LIKE 和 PATINDEX)中使用这些通配符。
Examples
本文中的代码示例使用 AdventureWorks2022 或 AdventureWorksDW2022 示例数据库,可以从 Microsoft SQL Server 示例和社区项目 主页下载该数据库。
A. Basic example
以下示例返回以 m 字母开头的名称。
[n-z] 指定第二个字母必须是 n 到 z 范围内的某个字母。 百分比通配符 % 允许以第三个字符开头的任何字符或不允许字符。
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