LIKE (Entidade SQL)
Determina se um caractere String
específico corresponde a um padrão especificado.
Sintaxe
match [NOT] LIKE pattern [ESCAPE escape]
Argumentos
match
Uma expressão Entity SQL que é avaliada como um String
arquivo .
pattern
Um padrão para corresponder ao especificado String
.
escape
Um personagem de fuga.
NOT Especifica que o resultado de LIKE deve ser negado.
Devolver Valor
true
se o string
padrão corresponder, caso contrário, false
.
Observações
As expressões SQL de entidade que usam o operador LIKE são avaliadas da mesma forma que as expressões que usam igualdade como critério de filtro. No entanto, as expressões Entity SQL que usam o operador LIKE podem incluir literais e caracteres curinga.
A tabela a seguir descreve a sintaxe do padrão string
.
Caractere curinga | Description | Exemplo |
---|---|---|
% | Qualquer um string de zero ou mais caracteres. |
title like '%computer%' encontra todos os títulos com a palavra "computer" em qualquer lugar do título. |
_ (sublinhado) | Qualquer personagem. | firstname like '_ean' encontra todos os nomes próprios de quatro letras que terminam com "ean ", como Dean ou Sean. |
[ ] | Qualquer caractere único no intervalo especificado ([a-f]) ou definido ([abcdef]). | lastname like '[C-P]arsen' encontra sobrenomes terminando com "arsen" e começando com qualquer caractere entre C e P, como Carsen ou Larsen. |
[^] | Qualquer caractere único que não esteja no intervalo especificado ([^a-f]) ou definido ([^abcdef]). | lastname like 'de[^l]%' Localiza todos os sobrenomes que começam com "de" e não incluem "L" como a letra a seguir. |
Nota
O operador Entity SQL LIKE e a cláusula ESCAPE não podem ser aplicados a System.DateTime
valores or System.Guid
.
LIKE suporta correspondência de padrões ASCII e correspondência de padrões Unicode. Quando todos os parâmetros são caracteres ASCII, a correspondência de padrão ASCII é executada. Se um ou mais dos argumentos forem Unicode, todos os argumentos serão convertidos em Unicode e a correspondência de padrões Unicode será executada. Quando você usa Unicode com LIKE, os espaços em branco à direita são significativos; no entanto, para não-Unicode, espaços em branco à direita não são significativos. A sintaxe da cadeia de caracteres padrão do Entity SQL é a mesma do Transact-SQL.
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 no caractere string
. No entanto, caracteres curinga podem ser combinados com fragmentos arbitrários da cadeia de caracteres. Quando é usado com caracteres curinga, o operador LIKE é mais flexível do que os operadores de comparação de cadeia de caracteres = e !=.
Nota
Você pode usar extensões específicas do provedor se tiver como alvo um provedor específico. No entanto, tais construções podem ser tratadas de forma diferente por outros fornecedores, por exemplo. SqlServer suporta [primeiro-último] e [^primeiro-último] padrões onde o primeiro corresponde exatamente um caractere entre o primeiro e o último, e o segundo corresponde exatamente um caractere que não está entre o primeiro e o último.
Esc
Usando a cláusula ESCAPE, você pode procurar cadeias de caracteres que incluam um ou mais dos caracteres curinga especiais descritos na tabela da seção anterior. Por exemplo, suponha que vários documentos incluam o literal "100%" no título e você deseja pesquisar todos esses documentos. Como o caractere porcentagem (%) é um caractere curinga, você deve escapar dele usando a cláusula ESCAPE do Entity SQL para executar a pesquisa com êxito. Segue-se um exemplo deste filtro.
"title like '%100!%%' escape '!'"
Nesta expressão de pesquisa, o caractere curinga de porcentagem (%) imediatamente após o caractere de ponto de exclamação (!) é tratado como um literal, em vez de como um caractere curinga. Você pode usar qualquer caractere como um caractere de escape, exceto os caracteres curinga do Entity SQL e os caracteres de colchete ([ ]
). No exemplo anterior, o caractere ponto de exclamação (!) é o caractere de escape.
Exemplo
As duas consultas Entity SQL a seguir usam os operadores LIKE e ESCAPE para determinar se uma cadeia de caracteres específica corresponde a um padrão especificado. A primeira consulta procura o Name
que começa com os caracteres Down_
. Esta consulta usa a opção ESCAPE porque o sublinhado (_
) é um caractere curinga. Sem especificar a opção ESCAPE, a consulta procuraria quaisquer Name
valores que começassem com a palavra Down
seguida por qualquer caractere único diferente do caractere sublinhado. As consultas são baseadas no Modelo de Vendas AdventureWorks. Para compilar e executar esta consulta, siga estes passos:
Siga o procedimento em Como: Executar uma consulta que retorna resultados PrimitiveType.
Passe a seguinte consulta como um argumento para o
ExecutePrimitiveTypeQuery
método:
-- LIKE and ESCAPE
-- If an AdventureWorksEntities.Products contained a Name
-- with the value 'Down_Tube', the following query would find that
-- value.
Select value P.Name FROM AdventureWorksEntities.Products AS P
WHERE P.Name LIKE 'DownA_%' ESCAPE 'A'
-- LIKE
Select value P.Name FROM AdventureWorksEntities.Products AS P
WHERE P.Name LIKE 'BB%'