Operadores SQL: realizando correspondências parciais com LIKE e NOT LIKE


Volta a página anterior

Volta ao Menu Principal


Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

Operadores SQL: realizando correspondências parciais com LIKE e NOT LIKE

Até agora, verificamos iguais e diferentes, e vários outros operadores, em uma correspondência exata de um valor.

E se quisermos realizar uma correspondência parcial?

Podemos fazer isso em SQL com a palavra-chave LIKE.

A palavra-chave LIKE no SQL nos permite realizar uma correspondência parcial em um valor fornecido, onde podemos usar wildcards curingas) no lugar de outros valores para realizar uma pesquisa de correspondência parcial.

Podemos encontrar todos os valores que começam com A, por exemplo, não importa qual seja o valor real.

WHERE expressão LIKE valor_comparação

A consulta verificará se a expressão corresponde à lógica no valor de comparação.

Então, como podemos usar a palavra-chave LIKE para procurar correspondências parciais?

Usamos curingas (curingas) wildcards.

Curingas são caracteres especiais em SQL que representam outros caracteres.

Existem dois: um asterisco * e um sublinhado _.

Caracter Nome Significado
* Asterisco Zero, um ou mais de qualquer caractere
_ Underscore (sublinhado) Um de qualquer personagem

Portanto, um asterisco representa zero/um/muitos de qualquer caractere e um sublinhado representa um de qualquer caracter.

Como usar curingas (Wildcards) em SQL

Usar curingas em SQL significa adicionar os caracteres dentro de uma string que você está verificando.

Eles podem ir no início, no fim, no meio: em qualquer lugar da string. Depende apenas do resultado que você está procurando.

Um exemplo de adição de um caractere curinga ao final da string seria 'Anúncio*'.
Estamos verificando o valor 'Ad*', o banco de dados procurará valores que comecem com 'Ad' e qualquer número de caracteres depois dele.
Ele encontrará valores como 'Adam', 'Adela' e 'Ado', mas não 'Amy' (porque não começa com 'Ad').

Nossa consulta ficaria assim:

SELECT first_name
,      last_name
  FROM customer
 WHERE first_name LIKE 'Ad*';

Também poderíamos procurar um valor de '*filho'.
Isso encontrará todos os valores que terminam em 'filho' com qualquer número de caracteres antes dele.
Ele encontraria valores como 'Donaldson', 'Johnson' e 'Simpson', mas não 'Song', pois não termina em 'son'.

SELECT first_name
,      last_name
  FROM customer
 WHERE last_name LIKE '*son';

Podemos usar um curinga no meio de uma string.
Por exemplo, uma string 'A*d' encontrará todos os valores que começam com A, têm qualquer número de caracteres no meio e terminam com 'd'.

Ele encontraria valores como 'E', 'Amêndoa' e 'Blindado', mas não 'Antídoto'.

SELECT first_name, last_name
FROM customer
WHERE last_name LIKE 'A*d';

Um sublinhado é usado para localizar um único caractere.
Ele pode ser usado em qualquer lugar na string, assim como um asterisco.

Por exemplo, uma string de '_on' encontrará valores como 'Son' e 'Don', mas não 'Spoon' (pois contém mais de um caracter).

Uma consulta ficaria assim:

SELECT first_name
,      last_name
  FROM customer
 WHERE first_name LIKE '_on';

O uso de curingas pode ser uma boa maneira de encontrar os dados de que você precisa se não for uma correspondência exata.

Posso usar LIKE com IN?

Infelizmente não podemos.
IN usa uma correspondência exata e é equivalente a =.
LIKE é uma correspondência parcial.

IN não oferece suporte a uma lista de palavras-chave de correspondência parcial.

Para verificar vários valores de correspondência parcial, você teria que usar cláusulas WHERE separadas:

WHERE expression LIKE string1
   OR expression LIKE string2

Ou você pode usar uma expressão regular, se o valor puder ser expresso dessa forma.
Eu escrevi sobre expressões regulares aqui se você quiser mais informações.

Mais Informações

Aqui estão mais alguns artigos sobre a palavra-chave LIKE:


Copyright de Ben Brumm - DatabaseStar