Поделиться через


[ ] (подстановочный знак — символы для сопоставления) (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в 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

У вас могут быть установлены дополнительные соответствующие базы данных.

Б. Более сложный пример

В следующем примере оператор [] используется для поиска идентификаторов и имен всех сотрудников Adventure Works, имеющих адреса с четырехзначным почтовым индексом.

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

В. Использование набора, объединяющего диапазоны и одиночные символы

Набор подстановочных знаков может содержать как отдельные символы, так и диапазоны. В следующем примере оператор [] используется для поиска строки, которая начинается с цифры или набора специальных символов.

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)