sábado, 3 de setembro de 2016

Operador IN

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.

Consultar a relação de Termos e Abreviaturas acesse aqui.
Felipe Barbosa Ferreira
Até o próximo post!

Nenhum comentário:

Postar um comentário