Care este echivalentul PostgreSQL al funcției NVL Oracle?


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 ce COALESCE 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).

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *