أحدث البرامج التعليمية وتطوير الشبكة
 

SQL وظائف فارغة


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

انظروا إلى ما يلي "Products" الجدول:

P_Id اسم المنتج سعر الوحدة الوحدات في المخزن الوحدات_المطلوبة
1 Jarlsberg 10.45 16 15
2 مسكربون 32.56 23
3 غورغانزولا 15.67 9 20

لنفترض أن "UnitsOnOrder" العمود هو اختياري، ويمكن أن تحتوي على قيم فارغة.

لدينا عبارة SELECT التالية:

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

في المثال أعلاه، إذا كان أي من "UnitsOnOrder" القيم هي فارغة، والنتيجة هي فارغة.

مايكروسوفت ISNULL() يتم استخدام الدالة لتحديد كيف نريد لعلاج قيم فارغة.

و NVL() ، IFNULL() ، و COALESCE() يمكن أن يعمل أيضا أن تستخدم لتحقيق نفس النتيجة.

في هذه الحالة نريد قيم فارغة ليكون صفرا.

أدناه، إذا "UnitsOnOrder" لاغيا وانها لن تضر الحساب، لأن ISNULL() إرجاع صفر إذا كانت القيمة فارغة:

MS Access

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

SQL Server

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

Oracle

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

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

MySQL

الخلية لا يكون لها ISNULL() وظيفة. ومع ذلك، فإنه يعمل مختلفة قليلا من مايكروسوفت ISNULL() وظيفة.

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

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

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

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