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
NVLvoor staat. Het is moeilijk uit te leggen aan noobs. -
NVLheeft slechts 2 argumenten, terwijlCOALESCEeen willekeurig getal aanneemt . -
COALESCEmaakt deel uit van ANSI standaard SQL. Elke SQL-database ondersteunt dit, inclusief Oracle. Alleen Oracle ondersteuntNVL(en blijkbaar ook Informix; zie opmerkingen).