2.1 CASE nyilatkozat
Kétféleképpen írhatunk utasításokat SQL-ben CASE. Az első bejegyzés úgy néz ki, mintha a Java nyelvről váltana, míg a második formátum inkább többes szám if-else.
Kezdjük az első opcióval - a kapcsoló analógjával. Az általános formátum a következő:
CASE case_value
WHEN value1 THEN result1
[WHEN value2 THEN result2] ...
[ELSE resultN]
END
Valóban nagyon hasonlít a -hoz switch, csak a szavak különböznek kissé:
| SQL | Jáva |
|---|---|
| eset x | kapcsoló (x) { |
| amikor érték | eset értéke: |
| akkor eredmény | visszatérési eredmény; |
| más eredmény | alapértelmezett: eredmény visszaadása; |
| vége | } |
Fordítsunk le egy példát Java-ból SQL-be:
| Jáva | SQL |
|---|---|
|
|
2.2 A CASE utasítás második változata
Létezik az operátor második verziója is CASE, amely, mint fentebb említettük, inkább többes szám if-else. Az általános formátum a következő:
CASE
WHEN condition 1 THEN result1
[WHEN condition 2 THEN result2] ...
[ELSE resultN]
END
Itt a feltételeket egyszerűen szekvenciálisan ellenőrizzük, ha bármelyik igaz, akkor a megadott eredmény kerül visszaadásra. Ha egyik feltétel sem teljesül, akkor a -ban megadott érték ELSE.
Fordítsunk le egy példát Java-ból SQL-be:
| Jáva | SQL |
|---|---|
|
|
|
|
|
|
2.3 Oldja meg a problémát a CASE utasítás használatával
Írjunk le néhány érdekes kérdést. Ne feledje, volt egy feladatunk – tegyük hozzá a „LEJÁRT” szót! a múltbeli feladatok nevére a feladattáblázatban . Könnyen megtehető a CASE.
A határidő mezőben úgy fog kinézni, mint a nyilatkozat második változatában CASE:
CASE
WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name)
ELSE name
END
Példa egy teljes lekérdezésre az operátor használatával CASE:
SELECT
id,
emploee_id,
CASE WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name) ELSE name END AS name,
deadline
FROM task
A lekérdezés eredménye a következő lesz:
| id | employee_id | név | határidő |
|---|---|---|---|
| 1 | 1 | LEJÁRT! Javítson ki egy hibát a kezelőfelületen | 2022-06-01 |
| 2 | 2 | Javítson ki egy hibát a háttérben | 2022-06-15 |
| 3 | 5 | Vegyél kávét | 2022-07-01 |
| 4 | 5 | Vegyél kávét | 2022-08-01 |
| 5 | 5 | Vegyél kávét | 2022-09-01 |
| 6 | (NULLA) | Takarítsd ki az irodát | (NULLA) |
| 7 | 4 | Élvezd az életet | (NULLA) |
| 8 | 6 | Élvezd az életet | (NULLA) |
GO TO FULL VERSION