La funzione SQL NVL per sostituire i valori NULL
SQL NVL
sta per “Null Value”, ossia valore nullo, e serve a sostituire i valori NULL in record di dati e database con altri valori non nulli. In questo modo puoi ridurre le dimensioni dei database, migliorare la leggibilità di analisi e rapporti, oltre che ottimizzare le prestazioni delle tue query di ricerca.
Che cos’è la funzione SQL NVL
?
Gli amministratori e le amministratrici che lavorano regolarmente con i database e che necessitano di record di dati completi per le analisi conoscono il problema posto dai valori NULL. La mancanza di informazioni e le lacune possono causare risultati distorti, rapporti inutilizzabili e imprecisioni. La soluzione del problema si chiama SQL NVL
. Il nome della funzione sta per “Null-Value Logic” ed è uno strumento per aiutarti a sostituire colonne e campi vuoti con altri valori o sequenze di caratteri significativi e definiti dall’utente. Questa funzione permette di migliorare la qualità e la fruibilità dei tuoi record di dati e quindi anche l’efficienza e le prestazioni dei database.
Il funzionamento di SQL NVL
Il principio di funzionamento di NVL
è semplice: con SQL NVL
definisci il valore che deve sostituire i valori NULL nei tuoi risultati. La funzione controlla i record di dati selezionati alla ricerca di valori veri o falsi e sostituisce automaticamente i valori NULL trovati con le informazioni desiderate. I valori NULL sono di norma dati mancanti in righe e colonne. Non devono quindi essere confusi con un valore “0” numerico o con spazi vuoti.
Attenzione: SQL NVL
è utilizzata prevalentemente in database ORACLE. In MySQL o in SQL Server la funzione NVL
è stata sostituita dalla funzione ISNULL
. Se invece vuoi sostituire i valori NULL in database SQL Server e MS ACCESS, utilizza la funzione ISNULL
. In MySQL utilizza invece la funzione IFNULL
o COALESCE
. Il funzionamento è comunque lo stesso.
Impara le nozioni principali e le possibili applicazioni di un linguaggio di programmazione e per database ampiamente diffuso come SQL. La nostra introduzione a SQL mediante esempi ti sarà utile per entrare nel mondo di SQL.
Differenze fra NVL
, ISNULL
e IFNULL
A seconda del tipo di database può essere facile fare confusione fra NVL
, ISNULL
e IFNULL
. Queste tre funzioni sono molto simili, ma non sono disponibili in tutti i database e in tutti i sistemi di gestione di base di dati. La nostra panoramica ti aiuterà a scegliere la funzione giusta per sostituire i valori NULL.
Spiegazione di sintassi e parametri
Ciascuna delle funzioni SQL NVL
, ISNULL
e IFNULL
richiede due parametri che definiamo qui come “Valore1” e “Valore2”:
- Valore1: definisce il record di dati o la colonna in cui vuoi trovare e sostituire i valori NULL.
- Valore2: indica il valore con cui vuoi sostituire i valori NULL nei risultati. Qui puoi inserire informazioni significative come “Dato non disponibile”, “0” oppure “Sconosciuto” per eliminare le lacune e gli spazi vuoti.
Nelle parti seguenti trovi la sintassi per ciascuna delle tre funzioni.
NVL:
NVL(Valore1, Valore2)
sqlISNULL:
ISNULL(Valore1, Valore2)
sqlIFNULL:
IFNULL(Valore1, Valore2)
sqlDi solito queste funzioni sono utilizzate in combinazione con SQL SELECT e FROM
, che ti permettono di definire i record di dati da controllare.
Differenze fra SQL NVL, ISNULL e IFNULL
Queste funzioni per la gestione dei valori NULL sono molto simili e si differenziano per le seguenti caratteristiche:
Funzione SQL | Gestione dei valori NULL | Compatibilità |
---|---|---|
SQL NVL
|
Sostituisce i valori NULL trovati con un valore desiderato | Oracle, Db2 |
SQL ISNULL
|
Sostituisce valori NULL o stringhe vuote con il valore desiderato | SQL Server, MySQL, MS ACCESS |
SQL IFNULL
|
Sostituisce valori NULL con il valore desiderato e non interpreta lo spazio vuoto come valore NULL | MySQL, Google BigQuery |
Possibilità di applicazione di NVL
La sostituzione di valori NULL è utile per le applicazioni più svariate. Alcune di queste sono:
- Sostituzione di dati mancanti dei clienti o di indirizzi di consegna con valori leggibili come “sconosciuto”
- Sostituzione di saldi dei conti sconosciuti o transazioni non note con il valore numerico 0
- Sostituzione di valori vuoti per dati dei pazienti, dati finanziari o dati di produzione con valori standard e valori medi
- Sostituzione di valutazioni mancanti o feedback assenti con “Dato non disponibile”
- Sostituzione di immagini o informazioni mancanti con “Immagine mancante” o “Informazioni non disponibili”
Cerchi un sistema di gestione dei dati efficiente, dalle prestazioni affidabili, con efficienza scalabile e sicuro in caso di anomalie? Allora utilizza l’hosting SQL server di IONOS con soluzioni personalizzate per server e hosting, conformi alle normative europee sulla protezione dei dati.
- Traffico illimitato e fino a 1 Gbit/s di larghezza di banda
- Storage SSD NVMe veloce
- Plesk Web Host Edition incluso
Esempi pratici per l’operatore SQL NVL
Per descrivere meglio l’uso di NVL
, ISNULL
e IFNULL
, nelle parti seguenti trovi un esempio pratico di applicazione di ciascuna funzione, basato su una tabella clienti con colonne per indirizzo, età e ID cliente. In questi esempi vogliamo sostituire gli eventuali valori NULL nella colonna “Indirizzo” con il valore “Dato non disponibile”.
Esempio per SQL NVL
SELECT Indirizzo, Età, IDcliente, NVL(Indirizzo, 'Dato non disponibile')
FROM clienti
sqlEsempio per SQL ISNULL
SELECT Indirizzo, Età, IDcliente, ISNULL(Indirizzo, 'Dato non disponibile')
FROM clienti
sqlEsempio per SQL IFNULL
SELECT Indirizzo, Età, IDcliente, IFNULL(Indirizzo, 'Dato non disponibile')
FROM clienti
sqlAlternative a SQL NVL
Le funzioni NVL
, ISNULL
e IFNULL
sono praticamente identiche: devi solo controllare che la funzione sia disponibile per il database che stai utilizzando. Un’ulteriore alternativa quasi identica tra i comandi SQL, gli operatori SQL e le funzioni è SQL COALESCE. COALESCE
è disponibile in quasi tutte le applicazioni di database e permette di cambiare i valori NULL trovati con un valore sostitutivo.
Anche la sua sintassi è quasi identica alle altre:
COALESCE(Valore1, Valore2)
sql