Migliore risposta
La funzione NVL di Oracle ti consente di sostituire null con una stringa nei risultati di un query. È utile per eliminare i valori nulli.
Ecco la sintassi:
NVL(exp\_to\_check, replacement\_value)
Se exp\_to\_check
è nullo, quindi NLV () restituisce replacement\_value
. Se exp\_to\_check
non è nullo, allora NLV () restituisce exp\_to\_check
.
Sebbene non corrisponda esattamente, la funzione COALESCE () di PostgreSQL fornisce una funzionalità molto simile. Accetta un numero illimitato di argomenti e restituisce il primo argomento che non è nullo. Se tutti gli argomenti sono nulli, la funzione COALESCE
restituirà null. La sintassi è:
COALESCE (argument\_1, argument\_2, …)
Ecco un paio di esempi di base da illustrare, utilizzando il mio client di sviluppo di database Navicat per PostgreSQL :
Utilizzo di COALESCE () in una query reale
Ecco un esempio più realistico usando il Sakila Sample Database:
La tabella degli indirizzi contiene un indirizzo e un campo address2. Questultimo può essere nullo. Possiamo sostituire quelli con un valore di “N / A” utilizzando la funzione COALESCE ().
Mi piace che il Navicat Query Editor possa mostrarmi e persino inserire la sintassi corretta nelle mie query.
Ecco la query completa e i risultati:
Puoi vedere che i valori null address2 sono stati convertiti.
Cordiali saluti!
Adam
Risposta
COALESCE
Certo, NVL
è un nome più breve, ma sai cosa?
- Nessuno capisce cosa significa
NVL
. È difficile da spiegare ai niubbi. -
NVL
accetta solo 2 argomenti, mentreCOALESCE
accetta un numero arbitrario . -
COALESCE
fa parte dello standard SQL ANSI. Ogni database SQL lo supporta, incluso Oracle. Solo Oracle supportaNVL
(e apparentemente anche Informix; vedi commenti).