Bästa svaret
Oracles NVL-funktion låter dig ersätta null med en sträng i resultaten av en fråga. Det är användbart för att bli av med nollvärden.
Här är syntaxen:
NVL(exp\_to\_check, replacement\_value)
Om exp\_to\_check
är null, då returnerar NLV () replacement\_value
. Om exp\_to\_check
inte är null NLV () returnerar exp\_to\_check
.
Även om det inte är en exakt matchning, ger PostgreSQLs COALESCE () -funktion en mycket liknande funktionalitet. Den accepterar ett obegränsat antal argument och returnerar det första argumentet som inte är null. Om alla argument är null, kommer funktionen COALESCE
att returnera null. Syntaxen är:
COALESCE (argument\_1, argument\_2, …)
Här är några grundläggande exempel att illustrera med min Navicat for PostgreSQL databasutvecklingsklient:
Använda COALESCE () i en riktig fråga
Här är ett mer realistiskt exempel med Sakila Sample Database:
Adresstabellen innehåller ett adress- och adress2-fält. Det senare kan vara noll. Vi kan ersätta dem med värdet ”N / A” med funktionen COALESCE ().
Jag gillar att Navicat Query Editor kan visa mig och till och med infoga rätt syntax i mina frågor.
Här är den fullständiga frågan och resultaten:
Du kan se att nolladress2-värdena har konverterats.
Med vänliga hälsningar!
Adam
Svar
COALESCE
Visst, NVL
är ett kortare namn, men vet du vad?
- Ingen förstår vad
NVL
står för. Det är svårt att förklara för noobs. -
NVL
tar bara två argument, medanCOALESCE
tar ett godtyckligt tal . -
COALESCE
är en del av ANSI-standard SQL. Varje SQL-databas stöder den, inklusive Oracle. Endast Oracle stöderNVL
(och tydligen också Informix; se kommentarer).