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
NVLstår för. Det är svårt att förklara för noobs. -
NVLtar bara två argument, medanCOALESCEtar 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).