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