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

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库

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

示例

A:简单示例

以下示例返回以 m 字母开头的名称。 [n-z] 指定第二个字母必须是 nz 范围内的某个字母。 百分号通配符 % 允许任何或不包含以 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)