2.1 Pahayag ng KASO
Mayroong dalawang mga paraan upang magsulat ng isang pahayag sa SQL CASE. Ang unang entry ay nagmumukhang switch mula sa wikang Java, habang ang pangalawang format ay mas katulad ng maramihan if-else.
Magsimula tayo sa unang opsyon - isang analog ng switch. Ang pangkalahatang format ay:
CASE case_value
WHEN value1 THEN result1
[WHEN value2 THEN result2] ...
[ELSE resultN]
END
Talagang halos kapareho sa switch, ang mga salita lamang ay bahagyang naiiba:
| SQL | Java |
|---|---|
| kaso x | lumipat (x) { |
| kapag halaga | halaga ng kaso: |
| pagkatapos ay resulta | ibalik ang resulta; |
| ibang resulta | default: ibalik ang resulta; |
| wakas | } |
Isalin natin ang isang halimbawa mula sa Java sa SQL:
| Java | SQL |
|---|---|
|
|
2.2 Pangalawang bersyon ng CASE statement
Mayroon ding pangalawang bersyon ng operator CASE, na, tulad ng nabanggit sa itaas, ay mas katulad ng maramihan if-else. Ang pangkalahatang format ay:
CASE
WHEN condition 1 THEN result1
[WHEN condition 2 THEN result2] ...
[ELSE resultN]
END
Dito, ang mga kundisyon ay sinuri lamang nang sunud-sunod, kung ang alinman sa mga ito ay totoo, pagkatapos ay ibabalik ang tinukoy na resulta. Kung wala sa mga kundisyon ang totoo, ang halaga ay tinukoy sa ELSE.
Isalin natin ang isang halimbawa mula sa Java sa SQL:
| Java | SQL |
|---|---|
|
|
|
|
|
|
2.3 Lutasin ang problema gamit ang CASE statement
Sumulat tayo ng ilang interesanteng query. Tandaan, mayroon kaming gawain - idagdag ang salitang "EXPIRED!" sa pangalan ng mga nakaraang gawain sa talahanayan ng gawain . Madali itong gawin gamit ang CASE.
Para sa field ng deadline , magmumukha itong pangalawang bersyon ng statement CASE:
CASE
WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name)
ELSE name
END
Isang halimbawa ng kumpletong query gamit ang operator CASE:
SELECT
id,
emploee_id,
CASE WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name) ELSE name END AS name,
deadline
FROM task
Ang magiging resulta ng query na ito ay:
| id | emploee_id | pangalan | deadline |
|---|---|---|---|
| 1 | 1 | EXPIRED NA! Ayusin ang isang bug sa frontend | 2022-06-01 |
| 2 | 2 | Ayusin ang isang bug sa backend | 2022-06-15 |
| 3 | 5 | Bumili ng kape | 2022-07-01 |
| 4 | 5 | Bumili ng kape | 2022-08-01 |
| 5 | 5 | Bumili ng kape | 2022-09-01 |
| 6 | (WALA) | Linisin ang opisina | (WALA) |
| 7 | 4 | Masiyahan sa buhay | (WALA) |
| 8 | 6 | Masiyahan sa buhay | (WALA) |
GO TO FULL VERSION