Compartilhar via


_ (Curinga - corresponder a um caractere) (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureBanco de dados SQL no Microsoft Fabric

Use o caractere _ de 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.

Examples

Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que você pode baixar na página inicial Microsoft SQL Server Samples and Community Projects.

A. Exemplo básico

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

Você pode ter bancos de dados adicionais que atendam a esses critérios.

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

B. exemplo mais complexo

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

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

C. Escapar do caractere de 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 é usado como curinga e não está filtrando apenas as entidades de segurança começando com as letras db_. Para escapar do 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
...