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, mensCOALESCE
tager et vilkårligt tal . -
COALESCE
er en del af ANSI-standard SQL. Hver SQL-database understøtter den, inklusive Oracle. Kun Oracle understøtterNVL
(og tilsyneladende også Informix; se kommentarer).