Publicação: 07/02/2019
Área:Desenvolvimento Web e Mobile
O valor null em consultas SQL
Em geral, consultas SQL costumam ser intuitivas até para quem não tem familiaridade com a linguagem. Uma consulta por todas as pessoas cuja idade é maior que 18 anos retorna exatamente a lista de entradas de dado cuja informação de idade é maior que 18.
Existe uma situação, porém, em que os retornos da linguagem SQL são diferentes daqueles que esperaríamos da consulta, em função da presença de campos cujo valor é null.
É fundamental, para entender estes casos, termos claro o significado de null. null não é falso, nem 0, null significa que a informação sobre aquele campo não está presente no banco de dados.
Observe a tabela a seguir e as consultas na sequência:
id | nome | idade | bloqueado |
---|---|---|---|
1 | João | null | não |
2 | Pedro | 18 | sim |
3 | Paulo | 25 | sim |
4 | Maria | 7 | null |
5 | Lucas | 9 | null |
Se você nunca utilizou SQL mas domina o inglês, ou tem um conhecimento superficial da linguagem, é provável que consiga prever o retorno de todas as consultas, com a possível exceção da consulta 4.
Na verdade, assim como as consultas 1 e 2 não retornaram os dados de João, cuja idade é null, as consultas 3 e 4 não retornaram os dados de Maria e Lucas, cuja informação de bloqueado é também null.
Só que para a maioria das pessoas é natural esperar que a consulta 4 retorne também os dados de Maria e Lucas, já que ambos não estão marcados como "sim" no campo bloqueado. Porém, o comportamento de uma linguagem precisa ser consistente. Assim, o SQL não vai retornar os campos null para um teste de condição, já que null indica não se saber qual o valor do campo, exceto para o teste "is null".
Confira no vídeo a seguir a demonstração de cada uma destas consultas e uma discussão mais detalhada de como é gerado o retorno de cada uma delas:
(51) 3024-0730 - info@alfamidia.com.br - Porto Alegre/RS