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 |
---|---|
|
|
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 |
---|---|
|
|
|
|
|
|
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) |