LIKE (Entity SQL)
Determina se um elemento String
de caracteres 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
.
pattern
Um padrão para corresponder ao String
especificado.
escape
Um caractere de escape.
NOT especifica que o resultado de LIKE seja negado.
Valor Retornado
true
se string
corresponde ao padrão; caso contrário, false
.
Comentários
As expressões Entity SQL que usam o operador LIKE são avaliadas basicamente da mesma forma que as expressões que usam igualdade como critérios de filtragem. 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 de string
do padrão.
Caractere curinga | Descrição | Exemplo |
---|---|---|
% | Qualquer string entre zero ou mais caracteres. |
title like '%computer%' encontra todos os títulos com a palavra "computer" em qualquer lugar no título. |
_ (sublinhado) | Qualquer caractere único. | firstname like '_ean' encontra todos os primeiros nomes de quatro letras que terminam com "ean ", como Dean ou Sean. |
[ ] | Qualquer caractere único no intervalo ([a-f]) ou no conjunto ([abcdef]) especificado. | lastname like '[C-P]arsen' encontra sobrenomes terminando com "arsen" e começando com qualquer caractere único entre C e P, como Carsen ou Larsen. |
[^] | Qualquer caractere único que não esteja no intervalo ([^a-f]) nem no conjunto ([^abcdef]) especificado. | lastname like 'de[^l]%' localiza todos os sobrenomes que começam com "de" e não incluem "l" como a letra seguinte. |
Observação
O operador Entity SQL LIKE e a cláusula ESCAPE não podem ser aplicados a valores System.DateTime
ou System.Guid
.
LIKE oferece suporte à correspondência de padrão ASCII e à correspondência de padrão Unicode. Quando todos os parâmetros são caracteres ASCII, a correspondência de padrões ASCII é executada. Se um ou mais dos argumentos são Unicode, todos os argumentos são convertidos em Unicode e a correspondência de padrões Unicode é executada. Quando você usa Unicode com LIKE, espaços em branco à direita são significativos; no entanto, para não Unicode, os espaços em branco à direita não são significativos. A sintaxe de cadeia de caracteres padrão do Entity SQL é igual à do Transact-SQL.
Um padrão pode incluir caracteres normais e curingas. Durante a correspondência de padrões, os caracteres regulares devem corresponder exatamente aos caracteres especificados no caractere string
. No entanto, os caracteres curinga podem ser correspondidos a 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! =.
Observação
Você pode usar extensões específicas ao provedor se o destino for um provedor específico. No entanto, esses construtores podem ser tratados de maneira diferente por outros provedores, por exemplo. O SqlServer dá suporte aos padrões [first-last] e [^first-last], onde o primeiro padrão corresponde exatamente a um caractere entre o primeiro e o último, e o segundo padrão corresponde exatamente a um caractere que não esteja entre o primeiro e o último.
Escape
Ao usar a cláusula ESCAPE, você pode pesquisar 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 que você deseje pesquisar em todos esses documentos. Como o caractere percentual (%) é um caractere curinga, você precisa fazer escape dele usando a cláusula Entity SQL ESCAPE para executar a pesquisa com êxito. Veja a seguir um exemplo desse filtro.
"title like '%100!%%' escape '!'"
Nesta expressão de pesquisa, o caractere curinga de porcentagem (%) que segue imediatamente o caractere de ponto de exclamação (!) é tratado como um literal, não como um caractere curinga. Você pode usar qualquer caractere como caractere de escape, exceto os caracteres curinga de Entity SQL e os caracteres de colchete ([ ]
). No exemplo anterior, o caractere de 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 pesquisa pelo Name
que começa com os caracteres Down_
. Essa consulta usa a opção ESCAPE porque o sublinhado (_
) é um caractere curinga. Sem especificar a opção ESCAPE, a consulta pesquisaria por valores de Name
iniciados com a palavra Down
seguidos por qualquer caractere único que não seja o caractere de sublinhado. As consultas são baseadas no Modelo de Vendas AdventureWorks. Para compilar e executar essa consulta, siga estas etapas:
Siga o procedimento em Como executar uma consulta que retorna os resultados de PrimitiveType.
Passe a consulta a seguir como um argumento para o método
ExecutePrimitiveTypeQuery
:
-- 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%'