Cel mai bun răspuns
Funcția NVL Oracle vă permite să înlocuiți nul cu un șir în rezultatele unui interogare. Este util pentru a scăpa de valorile nule.
Iată sintaxa:
NVL(exp\_to\_check, replacement\_value)
Dacă exp\_to\_check
este nul, atunci NLV () returnează replacement\_value
. Dacă exp\_to\_check
nu este nul, atunci NLV () returnează exp\_to\_check
.
Deși nu este o potrivire exactă, funcția COALESCE () a PostgreSQL oferă o funcționalitate foarte similară. Acceptă un număr nelimitat de argumente și returnează primul argument care nu este nul. Dacă toate argumentele sunt nule, funcția COALESCE
va reveni nulă. Sintaxa sa este:
COALESCE (argument\_1, argument\_2, …)
Iată câteva exemple de bază de ilustrat, folosind clientul meu de dezvoltare a bazei de date Navicat pentru PostgreSQL :
Utilizarea COALESCE () într-o interogare reală
Iată un exemplu mai realist care utilizează baza de date Sakila Sample:
Tabelul de adrese conține o adresă și un câmp address2. Acesta din urmă poate fi nul. Îi putem înlocui pe cei cu valoarea „N / A” folosind funcția COALESCE ().
Îmi place că Navicat Query Editor îmi poate arăta și chiar introduce sintaxa corectă în interogările mele.
Iată interogarea completă și rezultatele:
Puteți vedea că valorile adresei nule2 au fost convertite.
Salutări!
Adam
Răspuns
COALESCE
Sigur, NVL
este un nume mai scurt, dar știi ce?
- Nimeni nu înțelege ce înseamnă
NVL
. Este greu de explicat noob-urilor. -
NVL
acceptă doar 2 argumente, în timp ceCOALESCE
ia un număr arbitrar . -
COALESCE
face parte din standardul ANSI SQL. Fiecare bază de date SQL o acceptă, inclusiv Oracle. Numai Oracle acceptăNVL
(și aparent și Informix; vezi comentariile).