[ ](通配符 - 要匹配的字符)(Transact-SQL)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics 分析平台系统 (PDW) Microsoft Fabric 中的 SQL 分析端点 Microsoft Fabric 中的仓库
匹配指定范围内或者属于方括号 [ ]
所指定的集合中的任意单个字符。 可以在涉及模式匹配的字符串比较(例如,LIKE
和 PATINDEX
)中使用这些通配符。
示例
A:简单示例
以下示例返回以 m
字母开头的名称。 [n-z]
指定第二个字母必须是 n
到 z
范围内的某个字母。 百分号通配符 %
允许任何或不包含以 3 个字符开头的字符。 model
数据库和 msdb
数据库均符合此条件。 master
数据库不符合条件,并被排除在结果集外。
SELECT name FROM sys.databases
WHERE name LIKE 'm[n-z]%';
结果集如下。
name
-----
model
msdb
可能必须安装其他符合条件的数据库。
B:更复杂的示例
以下示例使用 [] 运算符查找其地址中有四位邮政编码的所有 Adventure Works 雇员的 ID 和姓名。
-- Uses AdventureWorks
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
另请参阅
LIKE (Transact-SQL)
PATINDEX (Transact-SQL)
% (通配符 -- 需匹配的字符)(Transact-SQL)
[^](通配符 - 无需匹配的字符)(Transact-SQL)
_(通配符 - 匹配一个字符)(Transact-SQL)