Vad motsvarar PostgreSQL av Oracle NVL-funktion?


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, medan COALESCE tar ett godtyckligt tal .
  • COALESCE är en del av ANSI-standard SQL. Varje SQL-databas stöder den, inklusive Oracle. Endast Oracle stöder NVL (och tydligen också Informix; se kommentarer).

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *