2.1 CASE Operator
SQL tilida CASE operatorini yozishning ikki yo'li bor. Birinchi yozish usuli uni Java tilidagi switch'ga o'xshatadi, ikkinchi format esa ko'proq if-else ga o'xshaydi.
Keling, birinchi variantdan boshlaymiz – switchga o'xshash. Umumiy format quyidagicha ko'rinishga ega:
CASE case_value
WHEN value1 THEN result1
[WHEN value2 THEN result2] ...
[ELSE resultN]
END
Switch'ga juda o'xshaydi, faqat so'zlar biroz boshqacha:
| SQL | Java |
|---|---|
| case x | switch (x) { |
| when value | case value: |
| then result | return result; |
| else result | default: return result; |
| end | } |
Keling, Java dan SQL'ga misolni o'tkazib ko'raylik:
| Java | SQL |
|---|---|
|
|
2.2 CASE operatorining ikkinchi varianti
Shuningdek, CASE operatorining ikkinchi varianti ham mavjud bo'lib, u yuqorida aytilganidek, ko'proq if-else ga o'xshaydi. Umumiy format quyidagicha ko'rinishga ega:
CASE
WHEN условие1 THEN result1
[WHEN условие2 THEN result2] ...
[ELSE resultN]
END
Bu yerda shunchaki shartlar ketma-ket tekshiriladi, agar ulardan biri rost bo'lsa, belgilangan natija qaytariladi. Agar hech qaysi shart rost bo'lmasa, ELSE da ko'rsatilgan qiymat qaytariladi.
Keling, Java tilidan SQL tiliga misolni o'tkazib ko'raylik:
| Java | SQL |
|---|---|
|
|
|
|
|
|
2.3 CASE operatori yordamida masalani yechamiz
Keling, qiziqarli bir so'rov yozamiz. Esingizdami, bizda bir vazifa bor edi – "EXPIRED!" so'zini vazifalarni o'tgan sanalarida task jadvali bilan qo'shish. Uni CASE operatori yordamida osongina qilsa bo'ladi.
deadline maydoni uchun bu CASE operatorining ikkinchi varianti ko'rinishida bo'ladi:
CASE
WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name)
ELSE name
END
CASE operatoridan foydalanib to'liq so'rovning misoli:
SELECT
id,
emploee_id,
CASE WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name) ELSE name END AS name,
deadline
FROM task
Ushbu so'rovning natijasi quyidagicha bo'ladi:
| id | emploee_id | name | deadline |
|---|---|---|---|
| 1 | 1 | EXPIRED! Frontenddagi xatoni tuzatish | 2022-06-01 |
| 2 | 2 | Backenddagi xatoni tuzatish | 2022-06-15 |
| 3 | 5 | Kofe sotib olish | 2022-07-01 |
| 4 | 5 | Kofe sotib olish | 2022-08-01 |
| 5 | 5 | Kofe sotib olish | 2022-09-01 |
| 6 | (NULL) | Ofisni tozalash | (NULL) |
| 7 | 4 | Hayotdan zavqlanish | (NULL) |
| 8 | 6 | Hayotdan zavqlanish | (NULL) |
GO TO FULL VERSION