Wat is het PostgreSQL-equivalent van Oracle ' s NVL-functie?


Beste antwoord

Met de NVL-functie van Oracle kunt u null vervangen door een tekenreeks in de resultaten van een query. Het is handig om null-waarden te verwijderen.

Hier is de syntaxis:

NVL(exp\_to\_check, replacement\_value)

If exp\_to\_check is null, dan geeft NLV () replacement\_value terug. Als exp\_to\_check niet null is, dan NLV () geeft de exp\_to\_check terug.

Hoewel het geen exacte overeenkomst is, biedt de functie COALESCE () van PostgreSQL een zeer vergelijkbare functionaliteit. Het accepteert een onbeperkt aantal argumenten en geeft het eerste argument terug dat niet null is. Als alle argumenten null zijn, retourneert de functie COALESCE null. De syntaxis is:

COALESCE (argument\_1, argument\_2, …)

Hier zijn een paar basisvoorbeelden om te illustreren, met behulp van mijn Navicat voor PostgreSQL database-ontwikkelingsclient:

COALESCE () gebruiken in een echte zoekopdracht

Hier is een meer realistisch voorbeeld met behulp van de Sakila Sample Database:

De adrestabel bevat een adres en adres2 veld. Dit laatste kan nul zijn. We kunnen deze vervangen door de waarde “N / A” met behulp van de functie COALESCE ().

Ik vind het leuk dat de Navicat Query Editor mij de juiste syntaxis kan laten zien en zelfs kan invoegen in mijn zoekopdrachten.

Hier is de volledige zoekopdracht en resultaten:

U kunt zien dat de null-adres2-waarden zijn geconverteerd.

Met vriendelijke groet!

Adam

Antwoord

COALESCE

Zeker, NVL is een kortere naam, maar weet je wat?

  • Niemand begrijpt waar NVL voor staat. Het is moeilijk uit te leggen aan noobs.
  • NVL heeft slechts 2 argumenten, terwijl COALESCE een willekeurig getal aanneemt .
  • COALESCE maakt deel uit van ANSI standaard SQL. Elke SQL-database ondersteunt dit, inclusief Oracle. Alleen Oracle ondersteunt NVL (en blijkbaar ook Informix; zie opmerkingen).

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *