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


_ (шаблон — совпадение одного символа) (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure базе данных SQL в Microsoft Fabric

Используйте символ подчеркивания _ для совпадения с любым одиночным символом в операции сравнения строк, которая использует сопоставление шаблонов, например LIKE и PATINDEX.

Примеры

A. Простой пример

В следующем примере возвращаются все имена баз данных, которые начинаются с буквы m и имеют третью букву d. Символ подчеркивания указывает, что вторым символом в имени может быть любая буква. Этому условию удовлетворяют базы данных model и msdb. А база данных master — нет.

SELECT name FROM sys.databases
WHERE name LIKE 'm_d%';

Вот результирующий набор.

name
-----
model
msdb

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

Для представления нескольких символов можно использовать несколько символов подчеркивания. При изменении условия LIKE для включения двух символов подчеркивания 'm__% в результат будет включена база данных master.

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

В следующем примере используется оператор _ для поиска в таблице Person всех людей, у которых имя состоит из трех букв и заканчивается на an.

-- USE AdventureWorks2022;
  
SELECT FirstName, LastName  
FROM Person.Person  
WHERE FirstName LIKE '_an'  
ORDER BY FirstName;  

В. Экранирование символа подчеркивания

В следующем примере возвращаются имена предопределенных ролей базы данных, например db_owner и db_ddladmin, но вместе с ними возвращается пользователь dbo.

SELECT name FROM sys.database_principals
WHERE name LIKE 'db_%';

Символ подчеркивания в третьей позиции рассматривается как подстановочный знак и не выполняет фильтрацию только участников, начинающихся с буквы db_. Чтоб экранировать символ подчеркивания, заключите его в скобки [_].

SELECT name FROM sys.database_principals
WHERE name LIKE 'db[_]%';

Теперь пользователь dbo исключен.

Вот результирующий набор.

name
-------------
db_owner
db_accessadmin
db_securityadmin
...

См. также

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