Enquanto a maioria dos aplicativos terá alguma forma de tecnologia do lado do servidor ou mesmo do lado do cliente que pode ser usada para filtrar os resultados da consulta do banco de dados que podem conter
NULL
ou valores vazios, usando outra linguagem e esse fardo adicional de execução de código é normalmente mais caro para o servidor e, de fato, bastante desnecessário. Em vez disso, abaixo vamos explorar brevemente como usar o próprio mecanismo MySQL para executar esta tarefa, apenas pegando os registros que você deseja, excluindo aqueles com
NULL
irritante colunas na mistura. IS NOT NULL Operador de comparação
De longe, o método mais simples e direto para garantir que o conjunto de resultados de uma coluna específica não contenha
NULL
valores é usar o IS NOT NULL
operador de comparação. Por exemplo, se quisermos selecionar todos os registros em nossos
books
tabela onde o primary_author
coluna não é NULL
, a consulta pode ficar assim:SELECT
primary_author,
published_date,
title
FROM
books
WHERE
primary_author IS NOT NULL;
Como
IS NOT NULL
se comporta como qualquer outro comparador, pode ser combinado com outros WHERE
cláusulas para filtrar ainda mais os resultados, como se você estivesse usando =
, >
, <
, LIKE
e outros operadores de comparação padrão. Filtrando NULL de várias colunas
Em alguns casos, você pode desejar recuperar resultados onde não
NULL
os valores estão presentes em várias colunas. Por exemplo, temos alguns registros nos books
tabela:id | title | primary_author | published_date
1 | The Hobbit | Tolkien | 09-21-1937
2 | The Silmarillion | Tolkien | 09-15-1977
3 | The Name of the Wind | Rothfuss | 03-27-2007
4 | The Wise Man's Fear | Rothfuss | 03-01-2011
5 | The Doors of Stone | Rothfuss | NULL
6 | Beowulf | NULL | 01-01-1000
Observe que As Portas de Pedra (
id 5
) não foi publicado e, portanto, a published_date
é NULL
. Da mesma forma, Beowulf (id 6
) – o famoso poema épico em inglês antigo – não tem autor conhecido, então primary_author
é NULL
. Nesse caso, podemos querer consultar resultados que contenham apenas os primeiros quatro registros, excluindo assim os dois últimos registros que têm
NULL
valores em primary_author
ou published_date
. Isso pode ser realizado com esta instrução simples usando AND
com múltiplos operadores de comparação:SELECT
primary_author,
published_date,
title
FROM
books
WHERE
(
primary_author IS NOT NULL
AND
published_date IS NOT NULL
);
Observação:os parênteses não são obrigatórios, mas é uma boa prática incluir comparadores agrupados para melhor legibilidade.
Aí está; um operador de comparação simples que pode ser usado para filtrar todo e qualquer
NULL
valores em seus registros.