SQL NULL funksiyalari
SQL COALESCE(), IFNULL(), ISNULL() va NVL() funksiyalari
NULL qiymatlarni o‘z ichiga olgan operatsiyalar ba’zan kutilmagan natijalarga olib kelishi mumkin.
SQL’da NULL qiymatlar bilan ishlash uchun bir nechta o‘rnatilgan funksiyalar mavjud, ulardan eng keng tarqalganlari:
COALESCE()- afzal qilingan standart. (IN MySQL, SQL Server va Oracle ishlaydi)IFNULL()- (MySQL)ISNULL()- (SQL Server)NVL()- (Oracle)IsNull()- (MS Access)
Eslatma: NULL qiymati ma’lumotlar bazasi maydonidagi noma’lum yoki yetishmayotgan ma’lumotni bildiradi. Bu qiymatning o‘zi emas, balki ma’lumot yo‘qligini bildiruvchi o‘rinbosardir.
Demo ma’lumotlar bazasi
Bizda quyidagi "Products" jadvali bor deb faraz qilaylik:
| PId | ProductName | Price | InStock | InOrder |
|---|---|---|---|---|
| 1 | Jarlsberg | 10.45 | 16 | 15 |
| 2 | Mascarpone | 32.56 | 23 | null |
| 3 | Gorgonzola | 15.67 | 9 | 20 |
"InOrder" ustuni ixtiyoriy va NULL qiymatlarni o‘z ichiga olishi mumkin.
Endi quyidagi SQL operatori (so‘rovi)ga qarang:
SELECT ProductName, Price * (InStock + InOrder)
FROM Products;
Eslatma: Yuqoridagi SQL’da, agar "InOrder" qiymatlaridan birortasi NULL bo‘lsa, natija NULL bo‘ladi!
COALESCE() funksiyasi
COALESCE() funksiyasi potentsial NULL qiymatlarni qayta ishlash uchun afzal qilingan standartdir.
COALESCE() funksiyasi qiymatlar ro‘yxatidagi NULL bo‘lmagan birinchi qiymatni qaytaradi.
COALESCE() funksiyasi MySQL, SQL Server va Oracle’da ishlaydi (MS Access’da ishlamaydi).
Sintaksis
COALESCE(val1, val2, ...., val_n)
Bu yerda NULL qiymatlarni 0 bilan almashtirish uchun COALESCE() funksiyasidan foydalanamiz:
SELECT ProductName, Price * (InStock + COALESCE(InOrder, 0))
FROM Products;IFNULL() funksiyasi (MySQL)
MySQL IFNULL() funksiyasi NULLni belgilangan qiymat bilan almashtiradi.
Sintaksis
IFNULL(expr, alt)
Bu yerda NULL qiymatlarni 0 bilan almashtiramiz:
SELECT ProductName, Price * (InStock + IFNULL(InOrder, 0))
FROM Products;ISNULL() funksiyasi (SQL Server)
SQL Server ISNULL() funksiyasi NULLni belgilangan qiymat bilan almashtiradi.
Sintaksis
ISNULL(expr, alt)
Bu yerda NULL qiymatlarni 0 bilan almashtiramiz:
SELECT ProductName, Price * (InStock + ISNULL(InOrder, 0))
FROM Products;NVL() funksiyasi (Oracle)
Oracle NVL() funksiyasi NULLni belgilangan qiymat bilan almashtiradi.
Sintaksis
NVL(expr, alt)
Bu yerda NULL qiymatlarni 0 bilan almashtiramiz:
SELECT ProductName, Price * (InStock + NVL(InOrder, 0))
FROM Products;IsNull() funksiyasi (MS Access)
MS Access IsNull() funksiyasi ifoda NULL bo‘lsa TRUE, aks holda FALSE qaytaradi.
Sintaksis
IsNull(expr)
MS Access IIf() funksiyasi ifodani baholashga qarab ikki qismdan birini qaytaradi.
Sintaksis
IIf(expr, truepart, falsepart)
- expr - Majburiy. Baholash uchun ifoda
- truepart - Agar ifoda rost bo‘lsa, qaytariladigan qiymat
- falsepart - Agar ifoda False bo‘lsa, qaytariladigan qiymat
Bu yerda NULL qiymatlarni 0 bilan almashtiramiz:
SELECT ProductName, Price * (InStock + IIf(IsNull(InOrder), 0,
InOrder))
FROM Products;W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
