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