PostgreSQL CASE

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

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.