نوع البيانات SQL
- الصفحة السابقة SQL Nulls
- الصفحة التالية الخادم SQL - RDBMS
وظائف 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
- الصفحة السابقة SQL Nulls
- الصفحة التالية الخادم SQL - RDBMS