Összegzés: ebben az oktatóanyagban megtudhatja, hogyan használhatja a PostgreSQL CASE feltételes kifejezést feltételes lekérdezések létrehozásához.
a PostgreSQL CASE
kifejezés ugyanaz, mint a IF/ELSE
utasítás más programozási nyelvekben. Ez lehetővé teszi az if-else logika hozzáadását a lekérdezéshez, hogy hatékony lekérdezést képezzen.
mivel a CASE
egy kifejezés, minden olyan helyen használhatja, ahol egy kifejezés használható, pl.,SELECT
, WHERE
, GROUP BY
, és HAVING
záradék.
a CASE
kifejezésnek két formája van: általános és egyszerű forma.
1) Általános PostgreSQL ESET kifejezés
az alábbiakban bemutatjuk a CASE
utasítás általános formáját:
Code language: SQL (Structured Query Language) (sql)
ebben a szintaxisban minden feltétel (condition_1
, condition_2
…) egy logikai kifejezés, amely vagy true
vagy false
értéket ad vissza.
amikor egy feltétel értéke false
, a CASE
kifejezés kiértékeli a következő feltételt fentről lefelé, amíg meg nem találja a true
értéket.
ha egy feltétel értéke true
, a CASE
kifejezés a feltételt követő megfelelő eredményt adja vissza. Ha például a condition_2
értéke true
, a CASE
kifejezés a result_2
értéket adja vissza. Ezenkívül azonnal leállítja a következő kifejezés értékelését.
abban az esetben, ha az összes feltétel false
értékre kerül, a CASE
kifejezés aELSE
kulcsszót követő eredményt (else_result
) adja vissza. Ha kihagyja a ELSE
záradékot, a CASE
kifejezés NULL
értéket ad vissza.
vessünk egy pillantást a film
táblázatra a minta adatbázisból.
A) Általános példa
tegyük fel, hogy a filmeket hosszuk szerint szeretné címkézni a következő logika alapján:
- ha a hossza kevesebb, mint 50 perc, a film rövid.
- ha a hossza 50 percnél hosszabb, de legfeljebb 120 perc, a film közepes.
- ha a hossza nagyobb, mint 120 perc, a film hosszú.
ennek a logikának az alkalmazásához használhatja a CASE
kifejezést a SELECT
utasításban az alábbiak szerint:
Code language: PHP (php)
kimenet:
ne feledje, hogy a duration
oszlop álnevet a CASE
kifejezés után helyeztük el.
B) eset használata aggregált függvénnyel példa
tegyük fel, hogy árszegmenseket szeretne rendelni a következő logikával rendelkező filmekhez:
- ha a bérleti díj 0,99, a film gazdaságos.
- ha a bérleti díj 1,99, a film tömeg.
- ha a bérleti díj 4,99, a film prémium.
és tudni szeretné, hogy hány film tartozik a gazdasághoz, a tömeghez és a prémiumhoz.
ebben az esetben a CASE
kifejezéssel a következőképpen állíthatja össze a lekérdezést:
Code language: SQL (Structured Query Language) (sql)
a lekérdezés eredménye a következő:
ebben a példában a CASE
kifejezést használtuk 1 vagy 0 visszatérítésére, ha a bérleti díj az egyes árszegmensekbe esik. A SUM
függvényt alkalmaztuk az egyes árszegmensek összes filmjének kiszámításához.
2) egyszerű PostgreSQL CASE expression
PostgreSQL nyújt egy másik formája a CASE
kifejezés úgynevezett egyszerű formában az alábbiak szerint:
Code language: SQL (Structured Query Language) (sql)
a CASE
először kiértékeli a expression
értéket, majd összehasonlítja az eredményt az egyes értékekkel( value_1
, value_2
, …) a WHEN
záradékokban egymás után, amíg meg nem találja az egyezést.
ha a expression
eredménye megegyezik egy értékkel (value1, value2 stb.) egy WHEN
záradékban a CASE
a THEN
záradék megfelelő eredményét adja vissza.
ha a CASE
nem talál egyezést, akkor a else_result
értéket adja vissza, amely a ELSE
értéket követi, vagy NULL
értéket, ha a ELSE
nem érhető el.
A) egyszerű PostgreSQL ESET kifejezés példa
a következő utasítás a CASE
kifejezést használja a minősítési leírás hozzáadásához a kimenethez:
Code language: PHP (php)
ebben a példában egy egyszerű CASE
kifejezést használtunk a film
táblázat értékelésének összehasonlításához néhány szó szerinti értékkel, például G, PG, NC17, PG-13, és visszaadjuk a megfelelő értékelés leírását.
B) egyszerű PostgreSQL ESET kifejezés használata összesített függvény példával
a következő utasítás a CASE
kifejezést használja a SUM
funkcióval az egyes minősítésekben szereplő filmek számának kiszámításához:
Code language: PHP (php)
ebben az oktatóanyagban megtanulta, hogyan kell használni a PostgreSQL CASE
kifejezést összetett lekérdezések létrehozásához.
- hasznos volt ez az oktatóanyag ?
- igennem