Sammendrag: I denne opplæringen lærer Du Hvordan Du bruker postgresql CASE conditional expression til å danne betingede spørringer.
postgresql CASE
uttrykket er det samme som IF/ELSE
setningen i andre programmeringsspråk. Den lar deg legge til if-else logikk til spørringen for å danne en kraftig spørring.
siden CASE
er et uttrykk, kan du bruke det på alle steder der et uttrykk kan brukes f. eks.,SELECT
, WHERE
, GROUP BY
, og HAVING
klausul.
CASE
uttrykket har to former: generell og enkel form.
1) Generelt PostgreSQL CASE uttrykk
følgende illustrerer den generelle formen av CASE
setningen:
Code language: SQL (Structured Query Language) (sql)
i denne syntaks, hver betingelse (condition_1
, condition_2
…) er et boolsk uttrykk som returnerer enten true
eller false
.
når en betingelse evalueres til false
, evaluerer uttrykket CASE
den neste betingelsen fra topp til bunn til den finner en betingelse som evalueres til true
.
hvis en betingelse evalueres til true
, returnerer uttrykket CASE
det tilsvarende resultatet som følger betingelsen. Hvis for eksempel condition_2
evalueres til true
, returnerer CASE
– uttrykket result_2
. Det stopper også umiddelbart med å evaluere neste uttrykk.
hvis alle betingelser evalueres til false
, returnerer uttrykket CASE
resultatet (else_result
) som følger ELSE
– nøkkelordet. Hvis du utelater ELSE
– setningen, returnerer uttrykket CASE
NULL
.
La oss ta en titt på tabellen film
fra eksempeldatabasen.
A) et generelt EKSEMPEL
Anta at du vil merke filmene etter lengden basert på følgende logikk:
- hvis lengden er mindre enn 50 minutter, er filmen kort.
- hvis lengden er større enn 50 minutter og mindre enn eller lik 120 minutter, er filmen middels.
- hvis lengden er større enn 120 minutter, er filmen lang.
for å bruke denne logikken kan du bruke CASE
– uttrykket i SELECT
– setningen som følger:
Code language: PHP (php)
Utgang:
Merk at vi plasserte et kolonnealias duration
etter CASE
– uttrykket.
B) Bruke CASE med et aggregatfunksjon eksempel
Anta at du vil tilordne prissegmenter til filmer med følgende logikk:
- hvis leieprisen er 0,99, er filmen økonomisk.
- hvis leieprisen er 1,99, er filmen masse.
- hvis leieprisen er 4,99, er filmen premium.
og du vil vite hvor mange filmer som tilhører økonomi, masse og premie.
i dette tilfellet kan du bruke uttrykket CASE
til å konstruere spørringen som følger:
Code language: SQL (Structured Query Language) (sql)
resultatet av spørringen er som følger:
i dette eksemplet brukte vi uttrykket CASE
til å returnere 1 eller 0 hvis leieprisen faller inn i hvert prissegment. Og vi brukte funksjonen SUM
for å beregne totalt antall filmer for hvert prissegment.
2) Enkelt PostgreSQL SAKSUTTRYKK
PostgreSQL gir en annen form for CASE
uttrykket kalt enkel form som følger:
Code language: SQL (Structured Query Language) (sql)
CASE
evaluerer først expression
og sammenligner resultatet med hver verdi( value_1
, value_2
, …) i WHEN
klausuler sekvensielt til den finner samsvar.
når resultatet av expression
er lik en verdi (verdi1, verdi2, etc.) i en WHEN
– klausul returnerer CASE
det tilsvarende resultatet i THEN
– klausulen.
hvis CASE
ikke finner noen treff, returnerer den else_result
i som følger ELSE
, eller NULL
verdien hvis ELSE
ikke er tilgjengelig.
A) Enkelt Eksempel På POSTGRESQL-SAKSUTTRYKK
følgende setning bruker CASE
– uttrykket for å legge til vurderingsbeskrivelsen i utgangen:
Code language: PHP (php)
I dette eksemplet brukte vi et enkelt CASE
– uttrykk for å sammenligne vurderingen fra film
– tabellen med noen bokstavelige verdier SOM G, PG, NC17, PG-13 og returnere den tilsvarende vurderingsbeskrivelsen.
B) Bruke enkelt POSTGRESQL-SAKSUTTRYKK med aggregatfunksjon eksempel
følgende setning bruker CASE
uttrykk med SUM
– funksjonen til å beregne antall filmer i hver vurdering:
Code language: PHP (php)
I denne opplæringen har du lært Hvordan Du bruker PostgreSQL CASE
uttrykk for å danne komplekse spørringer.
- Var denne opplæringen nyttig ?
- YesNo