Olá!
Ao elaborar uma instrução SQL que tenha a finalidade de consultar e filtrar os registros por valores específicos, como por exemplo: uma consulta que retorne os nomes das pessoas que contenham idade igual a 19, e 20, e 22, e 25.
Podemos construir o SQL da seguinte forma:
SELECT NOME
FROM PESSOA
WHERE IDADE = 19
AND IDADE = 20
AND IDADE = 22
AND IDADE = 25
ORDER BY CD_PESSOA
Note a quantidade de vezes que a instrução "AND IDADE = x" está sendo repetida. Imagine se filtro da pesquisa tivesse que possuir 50 idades especificas, deste modo teríamos que repetir a instrução 50 vezes. Desde modo, não é viável elaborar um código SQL desta forma.
Lembre-se que quando há uma instrução de código que está sendo repetida muitas vezes em sua aplicação, pare e analise o que está sendo feito. Pois, há uma grande chance de algo está errado.
Então, como eliminar essa repetição de código?
O operador IN permite especificar vários valores para realizar o filtro da consulta. Este operador é utilizado na clausula Where de uma instrução SQL.
A sintaxe:
campo_tabela IN (valor_1, valor_2, valor_3, ...)
Assim, o SQL apresentado no início deste post com o uso do operador IN possui a seguinte forma:
SELECT NOME
FROM PESSOA
WHERE IDADE IN (19, 20, 22, 25)
ORDER BY CD_PESSOA
Veja, como o código ficou claro, simples, fácil leitura. E que somente neste exemplo simples, conseguimos eliminar três linhas de códigos que estavam sendo repetidas.
Podemos usar o operador IN com valores Strings (textos) também, exemplo:
SELECT NOME
FROM PESSOA
WHERE IDADE IN (19, 20, 22, 25)
AND SOBRENOME IN ('Barbosa', 'Silva')
ORDER BY CD_PESSOA
Também, podemos fazer com que o operador IN ignore os registros que contenham os valores determinados. Para isso, basta adicionar o comando NOT antes do operador IN, conforme:
SELECT NOME
FROM PESSOA
WHERE IDADE NOT IN (19, 20, 22, 25)
ORDER BY CD_PESSOA
Neste exemplo, os registros da tabela que tiverem a idade igual os valores informados no operador IN, não serão listados na resposta da execução deste SQL.
Então, com o operador IN é possível fazer a filtragem dos dados de uma tabela por valores determinados, sendo para selecionar os registros que contenham o valor, ou ignorar tais registros na resposta da consulta ao banco de dados.
Felipe Barbosa Ferreira
Até o próximo post!
Nenhum comentário:
Postar um comentário