Hva tilsvarer PostgreSQL til Oracle NVL-funksjon?


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, mens COALESCE tar et vilkårlig tall .
  • COALESCE er en del av ANSI-standard SQL. Hver SQL-database støtter den, inkludert Oracle. Bare Oracle støtter NVL (og tilsynelatende også Informix; se kommentarer).

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *