Sebbene la maggior parte delle applicazioni disponga di una qualche forma di tecnologia lato server o anche lato client che può essere utilizzata per filtrare i risultati delle query del database che possono contenere NULL
o valori vuoti, l'utilizzo di un altro linguaggio e l'onere aggiuntivo dell'esecuzione del codice è in genere più costoso per il server e, di fatto, in gran parte non necessario.
Invece, di seguito esploreremo brevemente come utilizzare il motore MySQL stesso per eseguire questa attività, acquisendo solo i record che desideri escludendo quelli con fastidioso NULL
colonne nel mix.
IS NOT NULL Operatore di confronto
Il metodo di gran lunga più semplice e diretto per garantire che il set di risultati di una particolare colonna non contenga NULL
valori consiste nell'usare IS NOT NULL
operatore di confronto.
Ad esempio, se vogliamo selezionare tutti i record nei nostri books
tabella dove primary_author
la colonna non lo è NULL
, la query potrebbe essere simile a questa:
SELECT
primary_author,
published_date,
title
FROM
books
WHERE
primary_author IS NOT NULL;
Poiché IS NOT NULL
si comporta come qualsiasi altro comparatore, può essere combinato con altri WHERE
clausole per filtrare ulteriormente i risultati, proprio come se stessi usando =
, >
, <
, LIKE
e altri operatori di confronto standard.
Filtraggio NULL da più colonne
In alcuni casi potresti voler recuperare i risultati dove no NULL
i valori sono presenti su più colonne. Ad esempio, abbiamo alcuni record nei books
tabella:
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
Prendi nota che Le porte di pietra (id 5
) non è pubblicato e quindi il published_date
è NULL
. Allo stesso modo, Beowulf (id 6
) – il famoso poema epico in inglese antico – non ha un autore noto, quindi primary_author
è NULL
.
In questo caso, potremmo voler cercare risultati contenenti solo i primi quattro record, escludendo così gli ultimi due record che hanno NULL
valori in primary_author
o published_date
. Questo può essere eseguito con questa semplice istruzione usando AND
con più operatori di confronto:
SELECT
primary_author,
published_date,
title
FROM
books
WHERE
(
primary_author IS NOT NULL
AND
published_date IS NOT NULL
);
Nota:le parentesi non sono obbligatorie, ma è buona norma racchiudere i comparatori raggruppati per una migliore leggibilità.
Ecco qua; un semplice operatore di confronto che può essere utilizzato per filtrare tutti i NULL
valori nei tuoi archivi.