rezumat: în acest tutorial, veți învăța cum să utilizați expresia condiționată de caz PostgreSQL pentru a forma interogări condiționale.
expresia PostgreSQL CASE
este aceeași cu declarația IF/ELSE
din alte limbaje de programare. Vă permite să adăugați logica if-else la interogare pentru a forma o interogare puternică.
deoarece CASE
este o expresie, o puteți folosi în orice loc în care o expresie poate fi utilizată, de ex.,SELECT
, WHERE
, GROUP BY
, și HAVING
clauză.
expresia CASE
are două forme: forma generală și cea simplă.
1) General PostgreSQL Expresie caz
următoarele ilustrează forma generală a CASE
declarație:
Code language: SQL (Structured Query Language) (sql)
în această sintaxă, fiecare condiție (condition_1
, condition_2
…) este o expresie booleană care returnează fie true
, fie false
.
când o condiție se evaluează la false
, expresia CASE
evaluează următoarea condiție de sus în jos până când găsește o condiție care se evaluează la true
.
dacă o condiție se evaluează la true
, expresia CASE
returnează rezultatul corespunzător care urmează condiției. De exemplu, dacă condition_2
se evaluează la true
, expresia CASE
returnează result_2
. De asemenea, se oprește imediat evaluarea următoarei expresii.
în cazul în care toate condițiile se evaluează la false
, expresia CASE
returnează rezultatul (else_result
) care urmează cuvântului cheie ELSE
. Dacă omiteți clauza ELSE
, expresia CASE
returnează NULL
.
să aruncăm o privire la tabelul film
din Baza de date eșantion.
A) un exemplu de caz general
să presupunem că doriți să etichetați filmele după lungimea lor pe baza următoarei logici:
- dacă lungimea este mai mică de 50 de minute, filmul este scurt.
- dacă lungimea este mai mare de 50 de minute și mai mică sau egală cu 120 de minute, filmul este mediu.
- dacă lungimea este mai mare de 120 de minute, filmul este lung.
pentru a aplica această logică, puteți utiliza expresia CASE
din Instrucțiunea SELECT
după cum urmează:
Code language: PHP (php)
ieșire:
rețineți că am plasat un alias de coloană duration
după expresia CASE
.
B) utilizarea cazului cu un exemplu de funcție agregată
să presupunem că doriți să atribuiți segmente de preț filmelor cu următoarea logică:
- dacă rata de închiriere este de 0,99, filmul este economic.
- dacă rata de închiriere este de 1,99, filmul este în masă.
- dacă rata de închiriere este de 4,99, filmul este premium.
și doriți să știți numărul de filme care aparțin economiei, masei și premium.
în acest caz, puteți utiliza expresia CASE
pentru a construi interogarea după cum urmează:
Code language: SQL (Structured Query Language) (sql)
rezultatul interogării este următorul:
în acest exemplu, am folosit expresia CASE
pentru a returna 1 sau 0 dacă rata de închiriere se încadrează în fiecare segment de preț. Și am aplicat funcția SUM
pentru a calcula totalul filmelor pentru fiecare segment de preț.
2) expresie simplă de caz PostgreSQL
PostgreSQL oferă o altă formă a expresiei CASE
numită formă simplă după cum urmează:
Code language: SQL (Structured Query Language) (sql)
CASE
evaluează mai întâi expression
și compară rezultatul cu fiecare valoare( value_1
, value_2
, …) în clauzele WHEN
secvențial până când găsește potrivirea.
odată ce rezultatul expression
este egal cu o valoare (valoare1, valoare2, etc.) într-o clauză WHEN
, CASE
returnează rezultatul corespunzător în clauza THEN
.
dacă CASE
nu găsește nicio potrivire, returnează else_result
în care urmează valoarea ELSE
sau NULL
dacă ELSE
nu este disponibil.
A) exemplu simplu de expresie a cazului PostgreSQL
următoarea instrucțiune folosește expresia CASE
pentru a adăuga descrierea evaluării la ieșire:
Code language: PHP (php)
în acest exemplu, am folosit o expresie simplă CASE
pentru a compara evaluarea din tabelul film
cu unele valori literale precum G, PG, NC17, PG-13 și pentru a returna descrierea evaluării corespunzătoare.
B) utilizarea expresiei de caz PostgreSQL simple cu exemplu de funcție agregată
următoarea instrucțiune folosește expresia CASE
cu funcția SUM
pentru a calcula numărul de filme din fiecare evaluare:
Code language: PHP (php)
în acest tutorial, ați învățat cum să utilizați expresia PostgreSQL CASE
pentru a forma interogări complexe.
- a fost util acest tutorial ?
- nu