💡 PostgreSQL: Null é Null
Recentemente precisei buscar em um banco de dados PostgreSQL os valores de uma tabela de compras onde o valor da coluna idempresaemitente deve ser diferente do valor da coluna idempresa.
Nessa tabela havia os seguintes registros.
No primeiro e no segundo registro o idempresa é diferente do idempresaemitente, então fiz a seguinte consulta SQL com a intenção de carregar esses registros.
SELECT * FROM compra WHERE idempresa != idempresaemitente;
E como resultado o SQL não retornou nenhum registro.
Isso acontece porque no SQL o null não é um valor comum e também não é vazio, ele é tratado de uma forma especial e não pode ser comparado com outros valores como inteiro, booleano ou string.
Sabendo que um campo com valor null não pode ser comparado com outros valores eu usei o COALESCE para fazer o tratamento desses valores.
A função COALESCE recebe dois parametros, o primeiro é o valor que ela vai validar, e o segundo é o valor que ela vai usar caso o primeiro valor seja null.
Minha consulta SQL final ficou assim.
SELECT * FROM compra WHERE idempresa != COALESCE(idempresaemitente, -1);
Assim tive como resultado os registros que eu esperava.
É uma dica bem simples, mas espero que tenham gostado e que ajude de alguma forma ;)