Kenyataan KES

Tersedia

2.1 Kenyataan KES

Terdapat dua cara untuk menulis pernyataan dalam SQL CASE. Entri pertama menjadikannya kelihatan seperti suis daripada bahasa Java, manakala format kedua lebih seperti jamak if-else.

Mari kita mulakan dengan pilihan pertama - analog suis. Format umum ialah:

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

Benar-benar hampir sama dengan switch, hanya perkataan yang berbeza sedikit:

SQL Jawa
kes x suis (x) {
apabila nilai nilai kes:
maka terhasillah pulangan hasil;
lain hasil lalai: pulangkan hasil;
tamat }

Mari terjemahkan contoh dari Java ke dalam 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 kedua pernyataan CASE

Terdapat juga versi kedua operator CASE, yang, seperti yang dinyatakan di atas, lebih mirip jamak if-else. Format umum ialah:

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

Di sini, syarat hanya diperiksa secara berurutan, jika mana-mana daripadanya adalah benar, maka hasil yang ditentukan akan dikembalikan. Jika tiada syarat yang benar, maka nilai yang dinyatakan dalam ELSE.

Mari terjemahkan contoh dari Java ke dalam 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 Selesaikan masalah menggunakan pernyataan KES

Mari tuliskan beberapa pertanyaan yang menarik. Ingat, kami mempunyai tugas - untuk menambah perkataan "TAMAT TEMPOH!" kepada nama tugasan lepas dalam jadual tugas . Ia boleh dilakukan dengan mudah dengan CASE.

Untuk medan tarikh akhir , ia akan kelihatan seperti versi kedua pernyataan CASE:


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

Contoh pertanyaan lengkap menggunakan operator CASE:


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

Hasil daripada pertanyaan ini ialah:

ID id_pekerja nama tarikh akhir
1 1 TAMAT TEMPOH! Betulkan pepijat pada bahagian hadapan 2022-06-01
2 2 Betulkan pepijat pada bahagian belakang 15-06-2022
3 5 Beli kopi 2022-07-01
4 5 Beli kopi 2022-08-01
5 5 Beli kopi 2022-09-01
6 (NULL) Bersihkan pejabat (NULL)
7 4 Nikmati kehidupan (NULL)
8 6 Nikmati kehidupan (NULL)
Komen
  • Popular
  • Baru
  • Tua
Anda mesti log masuk untuk meninggalkan ulasan
Halaman ini tidak mempunyai sebarang ulasan lagi