Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Ponto de Extremidade de Análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base de Dados SQL no Microsoft Fabric
Determina se uma cadeia de caracteres específica corresponde a um padrão especificado. Um padrão pode incluir caracteres regulares e caracteres curinga. Durante a correspondência de padrões, os caracteres regulares devem corresponder exatamente aos caracteres especificados na cadeia de caracteres. No entanto, caracteres curinga podem ser combinados com fragmentos arbitrários da cadeia de caracteres. O uso de caracteres curinga torna o LIKE operador mais flexível do que o uso dos operadores de = comparação e != string. Se qualquer um dos argumentos não for do tipo de dados de cadeia de caracteres, o Mecanismo de Banco de Dados do SQL Server o converterá em tipo de dados de cadeia de caracteres, se possível.
Transact-SQL convenções de sintaxe
Syntax
Sintaxe do SQL Server e do Banco de Dados SQL do Azure:
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]
Sintaxe do Azure Synapse Analytics e do Parallel Data Warehouse:
match_expression [ NOT ] LIKE pattern
ESCAPE e STRING_ESCAPE não são suportados no Azure Synapse Analytics ou no Analytics Platform System (PDW).
Arguments
match_expression
Qualquer expressão válida do tipo de dados de caracteres.
pattern
A cadeia de caracteres específica a ser pesquisada no match_expression e pode incluir caracteres curinga válidos na tabela a seguir. padrão pode ser um máximo de 8.000 bytes.
Se match_expression for um tipo de dados de precedência maior do que o padrão e o comprimento do padrão for maior que match_expression, você obterá um erro de truncamento durante a conversão implícita do valor do padrão para match_expression tipo.
| Personagem coringa | Description | Example |
|---|---|---|
% |
Qualquer cadeia de caracteres de zero ou mais caracteres. |
WHERE title LIKE '%computer%' encontra todos os títulos de livros com a palavra computer em qualquer lugar no título do livro. |
_ (sublinhado) |
Qualquer personagem. |
WHERE au_fname LIKE '_ean' encontra todos os nomes próprios de quatro letras que terminam com ean (Dean, Sean, e assim por diante). |
[ ] |
Qualquer caractere único dentro do intervalo [a-f] ou conjunto [abcdef]especificado. |
WHERE au_lname LIKE '[C-P]arsen' Encontra sobrenomes de autor terminando com arsen e começando com qualquer caractere entre C e P, por exemplo Carsen, , Larsen, Karsene assim por diante. Nas pesquisas de intervalo, os caracteres incluídos no intervalo podem variar dependendo das regras de classificação do agrupamento. |
[^] |
Qualquer caractere único que não esteja dentro do intervalo [^a-f] ou conjunto especificado.[^abcdef] |
WHERE au_lname LIKE 'de[^l]%' Localiza todos os sobrenomes do autor começando com de e onde a letra a seguir não lé . |
escape_character
Um caractere colocado na frente de um caractere curinga para indicar que o curinga é interpretado como um caractere regular e não como um curinga. escape_character é uma expressão de caractere que não tem padrão e deve ser avaliada para apenas um caractere.
Tipo de resultado
Boolean
Valor do resultado
LIKE retorna TRUE se o match_expression corresponder ao padrão especificado.
Remarks
Quando você faz comparações de cadeia de caracteres usando LIKE, todos os caracteres na cadeia de caracteres de padrão são significativos. Os caracteres significativos incluem quaisquer espaços à esquerda ou à direita. Se uma comparação em uma consulta for retornar todas as linhas com uma cadeia de caracteres LIKE 'abc ' (abc seguida por um único espaço), uma linha na qual o valor dessa coluna é abc (abc sem espaço) não será retornada. No entanto, os espaços em branco à direita, na expressão à qual o padrão é correspondido, são ignorados. Se uma comparação em uma consulta for retornar todas as linhas com a cadeia de caracteres LIKE 'abc' (abc sem um espaço), todas as linhas que começam com abc e têm zero ou mais espaços em branco à direita são retornadas.
Uma comparação de cadeia de caracteres usando um padrão que contém dados char e varchar pode não passar por uma LIKE comparação devido a como os dados são armazenados para cada tipo de dados. O exemplo a seguir passa uma variável char local para um procedimento armazenado e, em seguida, usa a correspondência de padrões para localizar todos os funcionários cujos sobrenomes começam com o conjunto especificado de caracteres.
-- Uses AdventureWorks
CREATE PROCEDURE FindEmployee @EmpLName CHAR(20)
AS
SELECT @EmpLName = RTRIM(@EmpLName) + '%';
SELECT p.FirstName,
p.LastName,
a.City
FROM Person.Person p
INNER JOIN Person.Address a
ON p.BusinessEntityID = a.AddressID
WHERE p.LastName LIKE @EmpLName;
GO
EXEC FindEmployee @EmpLName = 'Barb';
GO
FindEmployee No procedimento, nenhuma linha é retornada porque a variável char (@EmpLName) contém espaços em branco à direita sempre que o nome contém menos de 20 caracteres. Como a LastName coluna é varchar, não há espaços em branco à direita. Este procedimento falha porque os espaços em branco à direita são significativos.
No entanto, o exemplo a seguir é bem-sucedido porque espaços em branco à direita não são adicionados a uma variável varchar .
-- Uses AdventureWorks
CREATE PROCEDURE FindEmployee @EmpLName VARCHAR(20)
AS
SELECT @EmpLName = RTRIM(@EmpLName) + '%';
SELECT p.FirstName,
p.LastName,
a.City
FROM Person.Person p
INNER JOIN Person.Address a
ON p.BusinessEntityID = a.AddressID
WHERE p.LastName LIKE @EmpLName;
GO
EXEC FindEmployee @EmpLName = 'Barb';
GO
Aqui está o conjunto de resultados.
FirstName LastName City
---------- -------------------- ---------------
Angela Barbariol Snohomish
David Barber Snohomish
(2 row(s) affected)
Correspondência de padrões usando LIKE
LIKE suporta correspondência de padrões ASCII e correspondência de padrões Unicode. Quando todos os argumentos (match_expression, padrão e escape_character, se presentes) são tipos de dados de caracteres ASCII, a correspondência de padrões ASCII é executada. Se qualquer um dos argumentos for do tipo de dados Unicode, todos os argumentos serão convertidos em Unicode e a correspondência de padrão Unicode será executada. Quando você usa dados Unicode (tipos de dados nchar ou nvarchar ) com LIKE, os espaços em branco à direita são significativos, no entanto, para dados não-Unicode, os espaços em branco à direita não são significativos. Unicode LIKE é compatível com a norma ISO. ASCII LIKE é compatível com versões anteriores do SQL Server.
A série de exemplos a seguir mostra as diferenças nas linhas retornadas entre a correspondência de padrões ASCII e Unicode LIKE .
-- ASCII pattern matching with char column
CREATE TABLE t (col1 CHAR(30));
INSERT INTO t
VALUES ('Robert King');
SELECT * FROM t
WHERE col1 LIKE '% King'; -- returns 1 row
-- Unicode pattern matching with nchar column
CREATE TABLE t (col1 NCHAR(30));
INSERT INTO t
VALUES ('Robert King');
SELECT * FROM t
WHERE col1 LIKE '% King'; -- no rows returned
-- Unicode pattern matching with nchar column and RTRIM
CREATE TABLE t (col1 NCHAR(30));
INSERT INTO t
VALUES ('Robert King');
SELECT * FROM t
WHERE RTRIM(col1) LIKE '% King'; -- returns 1 row
Note
LIKE As comparações são afetadas pelo agrupamento. Para obter mais informações, consulte COLLATE (Transact-SQL).
Usar o caractere curinga %
Se o LIKE '5%' símbolo for especificado, o Mecanismo de Banco de Dados procurará o número 5 seguido por qualquer cadeia de caracteres de zero ou mais caracteres.
Por exemplo, a consulta a seguir mostra todas as AdventureWorks2025 exibições de gerenciamento dinâmico no banco de dados, porque todas elas começam com as letras dm.
-- Uses AdventureWorks
SELECT Name
FROM sys.system_views
WHERE Name LIKE 'dm%';
GO
Para ver todos os objetos que não são modos de exibição de gerenciamento dinâmico, use NOT LIKE 'dm%'. Se você tiver um total de 32 objetos e LIKE encontrar 13 nomes que correspondem ao padrão, NOT LIKE localizará os 19 objetos que não correspondem ao LIKE padrão.
Nem sempre você pode encontrar os mesmos nomes com um padrão como LIKE '[^d][^m]%'. Em vez de 19 nomes, você pode encontrar apenas 14, com todos os nomes que começam com d ou têm m como segunda letra eliminados dos resultados, e os nomes da exibição de gerenciamento dinâmico. Esse comportamento ocorre porque as cadeias de caracteres de correspondência com caracteres curinga negativos são avaliadas em etapas, uma curinga de cada vez. Se a partida falhar em algum momento da avaliação, ela é eliminada.
Usar caracteres curinga como literais
Você pode usar o padrão curinga de caracteres correspondentes como caracteres literais. Para usar um caractere curinga como um caractere literal, coloque o caractere curinga entre colchetes. A tabela a seguir mostra vários exemplos de uso da LIKE palavra-chave e dos caracteres curinga [ ] .
| Symbol | Meaning |
|---|---|
LIKE '5[%]' |
5% |
LIKE '[_]n' |
_n |
LIKE '[a-cdf]' |
a, b, c, dou f |
LIKE '[-acdf]' |
-, a, c, dou f |
LIKE '[ [ ]' |
[ |
LIKE ']' |
] |
LIKE 'abc[_]d%' |
abc_d e abc_de |
LIKE 'abc[def]' |
abcd, abcee abcf |
Correspondência de padrão com a cláusula ESCAPE
Você pode procurar cadeias de caracteres que incluam um ou mais caracteres curinga especiais. Por exemplo, a tabela de descontos em um banco de dados de clientes pode armazenar valores de desconto que incluem um sinal de porcentagem (%). Para procurar o sinal de porcentagem como um caractere em vez de como um caractere curinga, a palavra-chave ESCAPE e o caractere escape devem ser fornecidos. Por exemplo, um banco de dados de exemplo contém uma coluna chamada comment que contém o texto 30%. Para procurar linhas que contenham a cadeia de caracteres 30% em qualquer lugar na coluna de comentários, especifique uma cláusula WHERE como WHERE comment LIKE '%30!%%' ESCAPE '!'. Se ESCAPE e o caractere de escape não forem especificados, o Mecanismo de Banco de Dados retornará todas as linhas com a cadeia de caracteres 30!.
Se não houver nenhum caractere após um caractere de escape no padrão LIKE, o padrão não será válido e o LIKE retornará FALSE. Se o caractere após um caractere de escape não for um caractere curinga, o caractere de escape será descartado e o caractere a seguir será tratado como um caractere regular no padrão. Esses caracteres incluem o sinal de porcentagem (%), sublinhado (_) e caracteres curinga de colchete esquerdo ([) quando estão entre colchetes duplos ([ ]). Os caracteres de escape podem ser usados dentro dos caracteres de colchete duplo ([ ]), inclusive para escapar de um cursor (^), hífen (-) ou colchete direito (]).
0x0000 (char(0)) é um caractere indefinido em agrupamentos do Windows e não pode ser incluído em LIKE.
Examples
A. Use LIKE com o caractere curinga %
O exemplo a seguir localiza todos os números de telefone que têm código de 415PersonPhone área na tabela.
-- Uses AdventureWorks
SELECT p.FirstName,
p.LastName,
ph.PhoneNumber
FROM Person.PersonPhone AS ph
INNER JOIN Person.Person AS p
ON ph.BusinessEntityID = p.BusinessEntityID
WHERE ph.PhoneNumber LIKE '415%'
ORDER BY p.LastName;
GO
Aqui está o conjunto de resultados.
FirstName LastName Phone
----------------- ------------------- ------------
Ruben Alonso 415-555-124
Shelby Cook 415-555-0121
Karen Hu 415-555-0114
John Long 415-555-0147
David Long 415-555-0123
Gilbert Ma 415-555-0138
Meredith Moreno 415-555-0131
Alexandra Nelson 415-555-0174
Taylor Patterson 415-555-0170
Gabrielle Russell 415-555-0197
Dalton Simmons 415-555-0115
(11 row(s) affected)
B. Use NOT LIKE com o caractere curinga %
O exemplo a seguir localiza todos os números de telefone na PersonPhone tabela que têm códigos de área diferentes de 415.
-- Uses AdventureWorks
SELECT p.FirstName,
p.LastName,
ph.PhoneNumber
FROM Person.PersonPhone AS ph
INNER JOIN Person.Person AS p
ON ph.BusinessEntityID = p.BusinessEntityID
WHERE ph.PhoneNumber NOT LIKE '415%'
AND p.FirstName = 'Gail'
ORDER BY p.LastName;
GO
Aqui está o conjunto de resultados.
FirstName LastName Phone
---------------------- -------------------- -------------------
Gail Alexander 1 (11) 500 555-0120
Gail Butler 1 (11) 500 555-0191
Gail Erickson 834-555-0132
Gail Erickson 849-555-0139
Gail Griffin 450-555-0171
Gail Moore 155-555-0169
Gail Russell 334-555-0170
Gail Westover 305-555-0100
(8 row(s) affected)
C. Use a cláusula ESCAPE
O exemplo a seguir usa a ESCAPE cláusula e o caractere de escape para localizar a cadeia de caracteres 10-15% exata na coluna c1 da mytbl2 tabela.
USE tempdb;
GO
IF EXISTS (
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'mytbl2'
)
DROP TABLE mytbl2;
GO
USE tempdb;
GO
CREATE TABLE mytbl2 (c1 SYSNAME);
GO
INSERT mytbl2
VALUES ('Discount is 10-15% off'),
('Discount is .10-.15 off');
GO
SELECT c1
FROM mytbl2
WHERE c1 LIKE '%10-15!% off%' ESCAPE '!';
GO
D. Usar os caracteres curinga [ ]
O exemplo a Person seguir localiza funcionários na tabela com o nome de Cheryl ou Sheryl.
-- Uses AdventureWorks
SELECT BusinessEntityID,
FirstName,
LastName
FROM Person.Person
WHERE FirstName LIKE '[CS]heryl';
GO
O exemplo a seguir localiza as linhas para funcionários na Person tabela com sobrenomes de Zheng ou Zhang.
-- Uses AdventureWorks
SELECT LastName,
FirstName
FROM Person.Person
WHERE LastName LIKE 'Zh[ae]ng'
ORDER BY LastName ASC,
FirstName ASC;
GO
Exemplos: Azure Synapse Analytics and Analytics Platform System (PDW)
E. Use LIKE com o caractere curinga %
O exemplo a seguir localiza todos os funcionários na tabela com números de DimEmployee telefone que começam com 612.
-- Uses AdventureWorks
SELECT FirstName,
LastName,
Phone
FROM DimEmployee
WHERE phone LIKE '612%'
ORDER BY LastName;
F. Use NOT LIKE com o caractere curinga %
O exemplo a seguir localiza todos os números de telefone na DimEmployee tabela que não começam com 612.
-- Uses AdventureWorks
SELECT FirstName,
LastName,
Phone
FROM DimEmployee
WHERE phone NOT LIKE '612%'
ORDER BY LastName;
G. Use LIKE com o caractere curinga _
O exemplo a seguir localiza todos os números de telefone que têm um código de área começando com 6 e terminando na 2DimEmployee tabela. O caractere curinga % é incluído no final do padrão de pesquisa para corresponder a todos os caracteres a seguir no valor da coluna do telefone.
-- Uses AdventureWorks
SELECT FirstName,
LastName,
Phone
FROM DimEmployee
WHERE phone LIKE '6_2%'
ORDER BY LastName;