_ (Curinga – corresponde a um caractere) (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Use o caractere sublinhado _ para corresponder a qualquer caractere único em uma operação de comparação de cadeia de caracteres que envolva correspondência de padrões, como LIKE e PATINDEX.

Exemplos

A: Exemplo simples

O exemplo a seguir retorna todos os nomes de banco de dados que começam com a letra m e têm a letra d como a terceira letra. O caractere sublinhado especifica que o segundo caractere do nome pode ser qualquer letra. Os bancos de dados model e msdb atendem a esse critério. O banco de dados master não atende.

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

Veja a seguir o conjunto de resultados.

name
-----
model
msdb

Pode haver bancos de dados adicionais que atendem a esses critérios.

Você pode usar vários sublinhados para representar vários caracteres. Alterar o critério LIKE para incluir dois sublinhados 'm__%, inclui o banco de dados mestre no resultado.

B: Exemplo mais complexo

O exemplo a seguir usa o operador _ para localizar todas as pessoas na tabela Person que têm um nome de três letras que termina com an.

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

C: usando escape para o caractere sublinhado

O exemplo a seguir retorna os nomes das funções de banco de dados fixas como db_owner e db_ddladmin, mas também retorna o usuário dbo.

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

O sublinhado na posição do terceiro caractere é interpretado como um caractere curinga e não está filtrando somente entidades de segurança que começam com as letras db_. Para usar um escape no caractere sublinhado coloque-o entre colchetes [_].

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

Agora o usuário dbo foi excluído.

Veja a seguir o conjunto de resultados.

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

Confira também

LIKE (Transact-SQL)
PATINDEX (Transact-SQL)
% (Curinga - Caracteres a serem correspondidos)
[ ] (Curinga – Caracteres a serem correspondidos)
[^] (Curinga – Caracteres a não serem correspondidos)