Compartilhar via


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 Stringespecificado.

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:

  1. Siga o procedimento em Como executar uma consulta que retorna os resultados de PrimitiveType.

  2. 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%'

Confira também