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