Postgraduate CASE

Resume: i denne vejledning lærer du, hvordan du bruger postgraduate case betinget udtryk til at danne betingede forespørgsler.

udtrykket postgraduate CASE er det samme som IF/ELSE sætningen i andre programmeringssprog. Det giver dig mulighed for at tilføje if-else-logik til forespørgslen for at danne en kraftig forespørgsel.

da CASE er et udtryk, kan du bruge det på alle steder, hvor et udtryk kan bruges f. eks.,SELECT, WHERE, GROUP BY, og HAVING klausul.

CASE udtrykket har to former: generel og enkel form.

1) Generelt postgraduate CASE udtryk

følgende illustrerer den generelle form for CASE erklæring:

Code language: SQL (Structured Query Language) (sql)

i denne syntaks, hver betingelse (condition_1, condition_2…) er et boolsk udtryk, der returnerer enten true eller false.

når en betingelse evalueres til false, evaluerer udtrykket CASEden næste betingelse fra top til bund, indtil den finder en betingelse, der evalueres til true.

hvis en betingelse evalueres til true, returnerer udtrykket CASE det tilsvarende resultat, der følger betingelsen. Hvis condition_2 f.eks. evalueres til true, returnerer udtrykket CASE result_2. Det stopper også straks med at evaluere det næste udtryk.

hvis alle betingelser evalueres til false, returnerer udtrykketCASE resultatet (else_result), der følger nøgleordet ELSE. Hvis du udelader ELSE – klausulen, returnerer udtrykket CASE NULL.

lad os se på film tabellen fra eksempeldatabasen.

A) et generelt eksempel

Antag, at du vil mærke filmene efter deres længde baseret på følgende logik:

  • hvis længden er mindre end 50 minutter, er filmen kort.
  • hvis længden er større end 50 minutter og mindre end eller lig med 120 minutter, er filmen medium.
  • hvis længden er større end 120 minutter, er filmen Lang.

for at anvende denne logik kan du bruge CASE udtrykket i SELECT sætningen som følger:

Code language: PHP (php)

Output:

Bemærk, at vi placerede et kolonnealias duration efter CASE – udtrykket.

B) brug af CASE med et aggregatfunktionseksempel

Antag, at du vil tildele prissegmenter til film med følgende logik:

  • hvis lejeprisen er 0,99, er filmen økonomisk.
  • hvis lejeprisen er 1,99, er filmen masse.
  • hvis lejeprisen er 4,99, er filmen præmie.

og du vil vide antallet af film, der hører til økonomi, masse og præmie.

i dette tilfælde kan du bruge CASE – udtrykket til at konstruere forespørgslen som følger:

Code language: SQL (Structured Query Language) (sql)

resultatet af forespørgslen er som følger:

i dette eksempel brugte vi CASE – udtrykket til at returnere 1 eller 0, hvis lejeprisen falder inden for hvert prissegment. Og vi anvendte SUM – funktionen til at beregne summen af film for hvert prissegment.

2) simpel postgraduate CASE udtryk

postgraduate giver en anden form for CASE udtryk kaldet simple form som følger:

Code language: SQL (Structured Query Language) (sql)

CASE evaluerer først expression og sammenligner resultatet med hver værdi( value_1, value_2, …) i WHEN klausulerne sekventielt, indtil den finder kampen.

når resultatet af expression er lig med en værdi (værdi1, værdi2 osv.) i en WHEN klausul returnerer CASE det tilsvarende resultat i THEN klausulen.

hvis CASE ikke finder nogen matches, returnerer den else_result, der følger ELSE eller NULL værdien, hvis ELSE ikke er tilgængelig.

A) simpel postgraduate CASE udtryk eksempel

følgende sætning bruger CASE udtryk for at tilføje rating beskrivelse til output:

Code language: PHP (php)

i dette eksempel brugte vi et simpelt CASE udtryk til at sammenligne vurderingen fra film tabellen med nogle bogstavelige værdier som G, PG, NC17, PG-13 og returnere den tilsvarende klassificeringsbeskrivelse.

B) ved hjælp af simple CASE udtryk med aggregat funktion eksempel

følgende sætning bruger CASE udtryk med SUM funktion til at beregne antallet af film i hver rating:

Code language: PHP (php)

i denne tutorial har du lært, hvordan du bruger udtrykket postgraduate CASE til at danne komplekse forespørgsler.

  • var denne tutorial nyttig ?
  • Ja

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.