Correspondência de padrões em critérios de pesquisa

A palavra-chave LIKE pesquisa valores de cadeia de caracteres, data ou hora que correspondam ao padrão especificado. Para obter mais informações, consulte Tipos de dados (Transact-SQL). A palavra-chave LIKE usa uma expressão regular para conter o padrão pelo qual será feita a correspondência de valores. O padrão contém a cadeia dos caracteres da pesquisa, a qual pode conter qualquer combinação de quatro curingas.

Curinga

Significado

%

Qualquer cadeia de zero ou mais caracteres.

_

Qualquer caractere único.

[ ]

Qualquer caractere único dentro da faixa especificada (por exemplo, [a-f]) ou conjunto (por exemplo, [abcdef]).

[^]

Qualquer caractere único fora da faixa especificada (por exemplo, [^a - f]) ou conjunto (por exemplo, [^abcdef]).

Inclua os curingas e a cadeia de caracteres entre aspas simples, por exemplo:

  • LIKE 'Mc%' pesquisa todas as cadeias de caracteres que começam com as letras Mc (McBadden).

  • LIKE '% inger' pesquisa todas as cadeias de caracteres que terminam com as letras inger (Ringer, Stringer).

  • LIKE '% en%' pesquisa todas as cadeias de caracteres que contêm as letras en em qualquer parte da cadeia de caracteres (Bennet, Green, McBadden).

  • LIKE '_heryl' pesquisa todos os nomes de seis letras que terminam com as letras heryl (Cheryl, Sheryl).

  • LIKE' [CK] ars [eo] n' pesquisa Carsen, Karsen, Carson e Karson (Carson).

  • LIKE' [Z de M] inger' pesquisa todos os nomes que terminam com as letras inger e que começam com qualquer letra individual de M a Z (Ringer).

  • LIKE 'M [^ c]%' pesquisa todos os nomes que começam com a letra M e que não têm a letra c como segunda letra (MacFeather).

A consulta a seguir localiza todos os números de telefone da tabela Contact que têm código de área 415:

SELECT Phone
FROM AdventureWorks.Person.Contact
WHERE Phone LIKE '415%'

Você pode usar NOT LIKE com os mesmos curingas. Para localizar todos os números de telefone da tabela Contact que têm códigos de área diferentes de 415, use qualquer uma consultas equivalentes abaixo:

SELECT Phone
FROM AdventureWorks.Person.Contact
WHERE Phone NOT LIKE '415%'

-- Or

SELECT Phone
FROM AdventureWorks.Person.Contact
WHERE NOT Phone LIKE '415%'

A cláusula IS NOT NULL pode ser usada com curingas e a cláusula LIKE. Por exemplo, a consulta a seguir recupera os números de telefone da tabela Contact, começando com 415 e IS NOT NULL:

USE AdventureWorks;
GO
SELECT Phone
FROM Person.Contact
WHERE Phone LIKE '415%' and Phone IS NOT NULL
Observação importanteImportante

A saída de instruções que envolvem a palavra-chave LIKE depende da ordem de classificação escolhida durante a instalação. Para obter mais informações sobre os efeitos de diferentes ordens de classificação, consulte Trabalhando com agrupamentos.

As únicas condições WHERE que você pode usar em colunas de text são LIKE, IS NULL ou PATINDEX.

Os curingas usados sem LIKE são interpretados como constantes e não como padrão, ou seja, eles representam apenas seus próprios valores. A consulta a seguir tenta localizar quaisquer números de telefone constituídos apenas dos quatro caracteres 415%. A consulta não localizará números de telefone que comecem com 415. Para obter mais informações sobre constantes, consulte Constantes (Mecanismo de Banco de Dados).

SELECT Phone
FROM AdventureWorks.Person.Contact
WHERE Phone = '415%'

Outra consideração importante sobre o uso de curingas é o seu efeito no desempenho. Se um curinga começar a expressão, um índice não poderá ser usado. (Assim como você não saberia por onde começar a procurar na lista telefônica se lhe fosse dado o nome '%mith' em vez de 'Smith'.) Um curinga no meio ou no final de uma expressão não impede o uso de um índice. (Assim como em uma lista telefônica, você saberia onde pesquisar se o nome fosse 'Samuel%', independentemente de constarem na lista os nomes Samuels e Samuelson.)

Pesquisando caracteres curinga

Você pode pesquisar caracteres curinga. Há dois métodos para especificar um caractere que seria normalmente um curinga:

  • Use a palavra-chave ESCAPE para definir um caractere de escape. Quando o caractere de escape é colocado na frente do curinga no padrão, o curinga é interpretado como caractere. Por exemplo, para pesquisar a cadeia 5% em qualquer parte de uma cadeia de caracteres, use:

    WHERE ColumnA LIKE '%5/%%' ESCAPE '/'
    

    Nessa cláusula LIKE, os sinais de porcentagem (%) à esquerda e à direita são interpretados como curingas, e o sinal de porcentagem precedido de uma barra (/) é interpretado como o caractere %.

  • Use colchetes ([ ]) para incluir o próprio o curinga. Para pesquisar um hífen (-), em vez de usá-lo para especificar um intervalo de pesquisa, use o hífen como primeiro caractere dentro de um conjunto de colchetes:

    WHERE ColumnA LIKE '9[-]5'
    

    A tabela a seguir mostra o uso de curingas entre colchetes.

    Símbolo

    Significado

    LIKE 5 [%]'

    5%

    LIKE '5%'

    5 seguido de qualquer cadeia de caracteres de 0 ou mais caracteres

    LIKE '[_]n'

    _n

    LIKE '_n'

    an, in, on (e assim por diante)

    LIKE '[a-cdf]'

    a, b, c, d ou f

    LIKE '[-acdf]'

    -, a, c, d ou f

    LIKE '[ [ ]'

    [

    LIKE ']'

    ]

Quando são feitas comparações de cadeia de caracteres com LIKE, todos os caracteres da cadeia de caracteres padrão são significativos, inclusive todos os (espaços) em branco à esquerda e à direita. Se for solicitada uma comparação para retornar todas as linhas com uma cadeia de caracteres LIKE 'abc ' (abc seguido de um único espaço), não será retornada nenhuma linha na qual o valor daquela coluna seja abc (abc sem espaço). Porém, o contrário não é verdadeiro. Os espaços em branco à direita da expressão cujo padrão é correspondido são ignorados. Se for solicitada uma comparação para retornar todas as linhas com uma cadeia de caracteres LIKE 'abc' (abc sem espaço), serão retornadas todas as linhas que comecem com abc e que tenham zero ou mais espaços em branco à direita.