CASE va NULL ifodalar — SQL’ga shartli mantiq va bo’sh qiymatlarni boshqarish imkonini beruvchi vositalar. CASE — so’rov ichida “agar shunday bo’lsa, buni ko’rsat” mantig’ini yaratadi. NULL esa ma’lumot yo’qligini bildiradi va u bilan ishlash o’ziga xos qoidalarga ega.
CASE — so’rov ichida shartga qarab turli qiymat qaytaradigan ifoda. NULL — qiymat mavjud emasligini (bo’shlikni) bildiruvchi maxsus belgi.
Boshlang’ich jadval
Quyidagi foydalanuvchilar jadvali bilan ishlaymiz (ba’zi qiymatlar NULL):
| id | ism | yosh | shahar |
|---|---|---|---|
| 1 | Farrux | 26 | Toshkent |
| 2 | Master Sherkulov | 30 | NULL |
| 3 | Aziz | 17 | Samarqand |
CASE — shartli qiymat
CASE har bir qator uchun shartga qarab turli natija qaytaradi. Masalan, yoshga qarab toifa:
SELECT ism, yosh,
CASE
WHEN yosh >= 18 THEN 'Voyaga yetgan'
ELSE 'Voyaga yetmagan'
END AS toifa
FROM foydalanuvchilar;
Natija:
| ism | yosh | toifa |
|---|---|---|
| Farrux | 26 | Voyaga yetgan |
| Master Sherkulov | 30 | Voyaga yetgan |
| Aziz | 17 | Voyaga yetmagan |
CASE ... WHEN ... THEN ... ELSE ... END — har qator uchun shartni tekshirdi va mos matnni qaytardi. Bu if-else ning SQL’dagi ko’rinishidir.
Bir necha shart
CASE bir necha WHEN bilan ko’p variantli mantiq yaratadi:
SELECT ism, yosh,
CASE
WHEN yosh < 20 THEN 'Yosh'
WHEN yosh < 28 THEN 'O''rta'
ELSE 'Katta'
END AS guruh
FROM foydalanuvchilar;
Natija:
| ism | yosh | guruh |
|---|---|---|
| Farrux | 26 | O’rta |
| Master Sherkulov | 30 | Katta |
| Aziz | 17 | Yosh |
Shartlar yuqoridan pastga tekshirildi va birinchi mos kelgani qaytarildi. Bu else if zanjiriga o’xshaydi.
NULL bilan ishlash
NULL — qiymat yo’qligini bildiradi. Uni tekshirish uchun = NULL emas, IS NULL ishlatiladi:
SELECT ism, shahar FROM foydalanuvchilar
WHERE shahar IS NULL;
Natija:
| ism | shahar |
|---|---|
| Master Sherkulov | NULL |
Diqqat: WHERE shahar = NULL ishlamaydi — NULL bilan solishtirishda doim IS NULL yoki IS NOT NULL ishlatiladi. Bu SQL’ning muhim noziklik.
COALESCE — NULL o’rniga qiymat
COALESCE funksiyasi NULL qiymatni boshqa qiymat bilan almashtiradi. Bu bo’sh maydonlarni chiroyli ko’rsatishda foydali:
SELECT ism, COALESCE(shahar, 'Kiritilmagan') AS shahar
FROM foydalanuvchilar;
Natija:
| ism | shahar |
|---|---|
| Farrux | Toshkent |
| Master Sherkulov | Kiritilmagan |
| Aziz | Samarqand |
COALESCE(shahar, 'Kiritilmagan') — agar shahar NULL bo’lsa, uning o’rniga “Kiritilmagan” ko’rsatdi. Bu foydalanuvchiga bo’sh joy o’rniga tushunarli matn ko’rsatishda ishlatiladi.
Xulosa
Bu bo’limda CASE bilan shartli mantiqni, bir necha WHEN ni, NULL ni IS NULL bilan tekshirishni va COALESCE bilan almashtirishni ko’rib chiqdik. Eng muhim eslatma: NULL ni IS NULL bilan tekshiring. Keyingi darsda protseduralarga o’tamiz.