Beste svaret
Oracles NVL-funksjon lar deg erstatte null med en streng i resultatene av en spørring. Det er nyttig for å kvitte seg med nullverdier.
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, så NLV () returnerer exp\_to\_check
.
Selv om det ikke er en nøyaktig samsvar, gir PostgreSQLs COALESCE () -funksjon en veldig lignende funksjonalitet. Den godtar et ubegrenset antall argumenter og returnerer det første argumentet som ikke er null. Hvis alle argumentene er null, vil COALESCE
-funksjonen returnere null. Syntaksen er:
COALESCE (argument\_1, argument\_2, …)
Her er et par grunnleggende eksempler for å illustrere ved hjelp av Navicat for PostgreSQL klient for databaseutvikling:
Bruk av COALESCE () i en ekte forespørsel
Her er et mer realistisk eksempel ved bruk av Sakila-eksempeldatabase:
Adressetabellen inneholder et adresse- og adresse2-felt. Sistnevnte kan være null. Vi kan erstatte de med verdien «N / A» ved hjelp av COALESCE () -funksjonen.
Jeg liker at Navicat Query Editor kan vise meg og til og med sette inn riktig syntaks i spørsmålene mine.
Her er hele spørringen og resultatene:
Du kan se at nulladresse2-verdiene er konvertert.
Vennlig hilsen!
Adam
Svar
COALESCE
Jada, NVL
er et kortere navn, men vet du hva?
- Ingen forstår hva
NVL
står for. Det er vanskelig å forklare for noobs. -
NVL
tar bare to argumenter, mensCOALESCE
tar et vilkårlig tall . -
COALESCE
er en del av ANSI-standard SQL. Hver SQL-database støtter den, inkludert Oracle. Bare Oracle støtterNVL
(og tilsynelatende også Informix; se kommentarer).