2.1 pernyataan KASUS
Ada dua cara untuk menulis pernyataan dalam SQL CASE
. Entri pertama membuatnya terlihat seperti beralih dari bahasa Jawa, sedangkan format kedua lebih mirip jamak if-else
.
Mari kita mulai dengan opsi pertama - analog sakelar. Format umumnya adalah:
CASE case_value
WHEN value1 THEN result1
[WHEN value2 THEN result2] ...
[ELSE resultN]
END
Benar-benar sangat mirip dengan switch
, hanya kata-katanya yang sedikit berbeda:
SQL | Jawa |
---|---|
kasus x | beralih (x) { |
ketika nilai | nilai kasus: |
lalu hasil | mengembalikan hasil; |
hasil lain | default: mengembalikan hasil; |
akhir | } |
Mari terjemahkan contoh dari Java ke SQL:
Jawa | SQL |
---|---|
|
|
2.2 Versi kedua dari pernyataan CASE
Ada juga versi kedua dari operator CASE
, yang seperti disebutkan di atas, lebih mirip jamak if-else
. Format umumnya adalah:
CASE
WHEN condition 1 THEN result1
[WHEN condition 2 THEN result2] ...
[ELSE resultN]
END
Di sini, kondisinya hanya diperiksa secara berurutan, jika ada yang benar, maka hasil yang ditentukan akan dikembalikan. Jika tidak ada kondisi yang benar, maka nilai yang ditentukan dalam ELSE
.
Mari terjemahkan contoh dari Java ke SQL:
Jawa | SQL |
---|---|
|
|
|
|
|
|
2.3 Selesaikan masalah menggunakan pernyataan CASE
Mari tuliskan beberapa kueri yang menarik. Ingat, kami memiliki tugas - untuk menambahkan kata "EXPIRED!" ke nama tugas sebelumnya di tabel tugas . Hal ini dapat dengan mudah dilakukan dengan CASE
.
Untuk bidang tenggat waktu , akan terlihat seperti pernyataan versi kedua CASE
:
CASE
WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name)
ELSE name
END
Contoh kueri 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 dari kueri ini adalah:
pengenal | employee_id | nama | tenggat waktu |
---|---|---|---|
1 | 1 | KEDALUWARSA! Perbaiki bug di frontend | 01-06-2022 |
2 | 2 | Perbaiki bug di backend | 15-06-2022 |
3 | 5 | Beli kopi | 01-07-2022 |
4 | 5 | Beli kopi | 01-08-2022 |
5 | 5 | Beli kopi | 01-09-2022 |
6 | (BATAL) | Membersihkan kantor | (BATAL) |
7 | 4 | Menikmati hidup | (BATAL) |
8 | 6 | Menikmati hidup | (BATAL) |
GO TO FULL VERSION