2.1 Pernyataan KASUS

Ana rong cara kanggo nulis statement ing SQL CASE. Entri pisanan katon kaya ngalih saka basa Jawa, dene format kapindho luwih kaya jamak if-else.

Ayo dadi miwiti karo pilihan pisanan - analog saka switch. Format umum yaiku:

CASE case_value
	WHEN value1 THEN result1
	[WHEN value2 THEN result2] ...
	[ELSE resultN]
END

Pancen mirip banget karo switch, mung tembung sing rada beda:

SQL Jawa
kasus x ngalih (x) {
nalika nilai nilai kasus:
banjur asil asil bali;
liyane asil standar: asil bali;
pungkasan }

Ayo nerjemahake conto saka Jawa menyang SQL:

Jawa SQL
switch (a) {
   case 1: return "one";
   case 2: return "two";
   case 3: return "three";
   default: return "unknown";
}
CASE a
   WHEN 1 THEN 'one'
   WHEN 2 THEN 'two'
   WHEN 3 THEN 'three'
   ELSE 'unknown'
END

2.2 Versi kapindho saka statement CASE

Ana uga versi kapindho operator CASE, kang, kaya kasebut ing ndhuwur, luwih kaya jamak if-else. Format umum yaiku:

CASE
	WHEN condition 1 THEN result1
	[WHEN condition 2 THEN result2] ...
	[ELSE resultN]
END

Ing kene, kahanan kasebut mung dicenthang kanthi urutan, yen ana sing bener, banjur asil sing ditemtokake bakal dibalekake. Yen ora ana kondisi sing bener, banjur nilai kasebut ing ELSE.

Ayo nerjemahake conto saka Jawa menyang SQL:

Jawa SQL
if (a == 3)
	return "three";
CASE
   WHEN a=3 THEN 'three'
END
if (a == 3)
	return "three";
else
	return "zero";
CASE
   WHEN a=3 THEN 'three'
   ELSE 'zero'
END
if (a == 1)
	return "three";
else if (a == 2)
	return "two";
else if (a == 3)
	return "three";
else
	return "zero";
CASE
   WHEN a=1 THEN 'one'
   WHEN a=2 THEN 'two'
   WHEN a=3 THEN 'three'
   ELSE 'zero'
END

2.3 Ngatasi masalah nggunakake statement CASE

Ayo nulis pitakon sing menarik. Elingi, kita duwe tugas - kanggo nambah tembung "KUTUS!" kanggo jeneng tugas kepungkur ing tabel tugas . Bisa gampang ditindakake kanthi CASE.

Kanggo lapangan tenggat wektu , bakal katon kaya versi kapindho statement kasebut CASE:


CASE
	WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name)
	ELSE name
END
        

Conto pitakon lengkap nggunakake operator CASE:


SELECT
    id,
    emploee_id,
    CASE WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name) ELSE name END AS name,
    deadline         	
FROM task
        

Asil saka pitakonan iki bakal dadi:

id id_karyawan jeneng deadline
1 1 KADALUWARSA! Ndandani bug ing frontend 2022-06-01
2 2 Ndandani bug ing backend 2022-06-15
3 5 Tuku kopi 2022-07-01
4 5 Tuku kopi 2022-08-01
5 5 Tuku kopi 2022-09-01
6 (NULL) Ngresiki kantor (NULL)
7 4 Seneng urip (NULL)
8 6 Seneng urip (NULL)