[ ] (подстановочный знак — символы для сопоставления) (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)