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, terwijlCOALESCE
een willekeurig getal aanneemt . -
COALESCE
maakt deel uit van ANSI standaard SQL. Elke SQL-database ondersteunt dit, inclusief Oracle. Alleen Oracle ondersteuntNVL
(en blijkbaar ook Informix; zie opmerkingen).