Qual è lequivalente PostgreSQL della funzione NVL di Oracle?


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, mentre COALESCE accetta un numero arbitrario .
  • COALESCE fa parte dello standard SQL ANSI. Ogni database SQL lo supporta, incluso Oracle. Solo Oracle supporta NVL (e apparentemente anche Informix; vedi commenti).

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *