Introdução ao Sql  Parte XIII

Operadores Especiais Parte 2

(LIKE e IN)

 

 

LIKE

            Com este operador, podemos comparar cadeias de caracteres utilizando padrões de comparação (wildcard) para umou mais caracteres. Normalmente, o caracter percentual (%) substitui zero, um ou mais caracteres e sublinha (_) substitui um caractere.

            Utilizando a combinação desses caracteres especiais com o que se quer localizar, pode-se conseguir uma variedade muito grande de expressões. Veja na tabela a seguir algumas possíveis combinações:

 

Expressão

Explicação

LIKE ‘A%’

Todas as palavras que iniciem com a letra A.

LIKE ‘%A’

Todas que terminem com a letra A.

LIKE ‘%A%’

Todas que tenham a letra A em qualquer posição.

LIKE ‘A_’

String de dois caracteres que tenham a primeira letra A e o segundo caractere seja qualquer outro.

LIKE ‘_A’

String de dois caracteres cujo primeiro caractere seja qualquer um e a última letra seja A.

LIKE ‘_A_’

String de três caracteres cuja segunda letra seja A, independentemente do primeiro ou do último caractere.

LIKE ‘%A_’

Todos que tenham a letra A na penúltima posição e a última seja qualquer outro caractere.

LIKE ‘_A%’

Todos que tenham a letra A na segunda posição e o primeiro caractere seja qualquer um.

 

No exemplo seguinte, procuraremos todos os nomes iniciados com a letra R:

 

            SELECT * FROM TABELA

            WHERE NOME LIKE ‘R%’;

 

Nessa busca abaixo, serão localizados todos os nomes que tenham a letra A na segunda posição da palavra. Note que utilizo a letra minúscula porque está dentro das aspas simples e, portanto, letras maiúscula e minúscula são diferentes.

 

            SELECT * FROM TABELA

            WHERE NOME LIKE  ‘_a%’;

 

Neste próximo exemplo, buscarei todos os nomes com a letra C no início e a letra R na terceira posição.

           

            SELECT * FROM TABELA

            WHERE NOME LIKE ‘C_r%’;

 

No próximo exemplo, utilizarei o LIKE com números. Apenas os preços que comecem com o algarismo 1 e tenham apenas um algarismo após o 1 serão retornados.

 

            SELECT CODIGO, NOME, PRECO FROM TABELA

            WHERE PRECO LIKE  ‘1_’;

 

Obs.: Um problema que pode surgir quando queremos fazer buscas utilizando os caracteres de substituição é tê-los na cadeia de caracteres que está sendo pesquisada. Nesse caso, devemos “avisar” o banco de dados utilizando um caracter especial denominado escape. Dessa forma, o comando a seguir seria válido e localizaria qualquer nome que tivesse no caracter sublinha(_)

 

            SELECT * FROM TABELA

            WHERE NOME LIKE ‘%\_%  ESCAPE ‘\’;

 

 

IN

 

            Permite comparar o valor de uma coluna com um conjunto de valores. Normalmente, utilizamos o IN para substituir uma série de comparações seguidas da cláusula OR. Note que apenas os nomes cujo código seja 1,10 ou 20 serão retornados.

 

            SELECT * FROM TABELA

            WHERE CODIGO IN (1,10,20);

 

A maior utilização do IN é, contudo, quando o utilizamos em subquery, veremos isso mais adiante.

 

Fico por aqui, no próximo artigo começarei a falar de cálculos e funções, até lá.