Hvad er PostgreSQL-ækvivalent med Oracles NVL-funktion?


Bedste svar

Oracles NVL-funktion giver dig mulighed for at erstatte null med en streng i resultaterne af en forespørgsel. Det er nyttigt at slippe af med nulværdier.

Her er syntaksen:

NVL(exp\_to\_check, replacement\_value)

Hvis exp\_to\_check er null, så returnerer NLV () replacement\_value. Hvis exp\_to\_check ikke er null, NLV () returnerer exp\_to\_check.

Selvom PostgreSQLs COALESCE () -funktion ikke er et nøjagtigt match, giver den en meget lignende funktionalitet. Den accepterer et ubegrænset antal argumenter og returnerer det første argument, der ikke er nul. Hvis alle argumenter er nul, returnerer COALESCE nul. Dens syntaks er:

COALESCE (argument\_1, argument\_2, …)

Her er et par grundlæggende eksempler til illustrering ved hjælp af min Navicat for PostgreSQL databaseudviklingsklient:

Brug af COALESCE () i en reel forespørgsel

Her er et mere realistisk eksempel ved hjælp af Sakila-eksempeldatabase:

Adressetabellen indeholder en adresse og adresse2-felt. Sidstnævnte kan være null. Vi kan erstatte dem med værdien “N / A” ved hjælp af COALESCE () -funktionen.

Jeg kan godt lide, at Navicat Query Editor kan vise mig og endda indsætte den korrekte syntaks i mine forespørgsler.

Her er den komplette forespørgsel og resultater:

Du kan se, at nuladresse2-værdierne er konverteret.

Med venlig hilsen!

Adam

Svar

COALESCE

Sikker på, NVL er et kortere navn, men ved du hvad?

  • Ingen forstår, hvad NVL står for. Det er svært at forklare for noobs.
  • NVL tager kun 2 argumenter, mens COALESCE tager et vilkårligt tal .
  • COALESCE er en del af ANSI-standard SQL. Hver SQL-database understøtter den, inklusive Oracle. Kun Oracle understøtter NVL (og tilsyneladende også Informix; se kommentarer).

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *