نوع البيانات SQL

وظائف SQL ISNULL()، NVL()، IFNULL() و COALESCE()

انظر الجدول "Products" التالي:

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 الحاسوب 699 25 15
2 الطابعة 365 36  
3 الهاتف 280 159 57

إذا كان "UnitsOnOrder" متاحًا بشكل اختياري وقد يحتوي على قيمة NULL.

نحن نستخدم جملة SELECT التالية:

SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products

في الأمثلة السابقة، إذا كانت قيمة "UnitsOnOrder" NULL، فإن النتيجة ستكون NULL.

وظيفة ISNULL() في Microsoft تستخدم لتعريف كيفية التعامل مع القيم NULL.

وظائف NVL(), IFNULL() و COALESCE() يمكنها تحقيق نفس النتيجة.

في هذا السياق، نريد أن تكون القيمة NULL تساوي 0.

إذا كان "UnitsOnOrder" NULL، فإن ذلك غير مفيد لحساب النتيجة، لذا إذا كان القيمة NULL، فإن ISNULL() تعود 0.

SQL Server / MS Access

SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products

Oracle

Oracle لا يمتلك وظيفة ISNULL(). ومع ذلك، يمكننا استخدام وظيفة NVL() لتحقيق نفس النتيجة:

SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products

MySQL

MySQL يمتلك أيضًا وظيفة مشابهة لـ ISNULL(). ومع ذلك، فإن طريقة عملها تختلف قليلاً عن وظيفة ISNULL() في Microsoft.

في MySQL، يمكننا استخدام وظيفة IFNULL()، مثل هذا:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

أو يمكننا استخدام وظيفة COALESCE()، مثل هذا:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products