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