كيفية استرداد "0" من دالة SUM الخاصة بـ MySQL في حالة عدم وجود قيم
توفر وظيفة SUM في MySQL طريقة ملائمة لتجميع الأرقام الرقمية قيم. ومع ذلك، عند عدم العثور على صفوف متطابقة أثناء الاستعلام، تقوم الدالة SUM عادةً بإرجاع قيمة NULL. بالنسبة لبعض حالات الاستخدام، قد يكون من الأفضل إرجاع "0" بدلاً من NULL.
استخدام COALESCE لحل المشكلة
يكمن حل هذه المشكلة في وظيفة التئام. يسمح لك COALESCE بتحديد القيمة الافتراضية التي سيتم إرجاعها عندما يتم تقييم الوسيطة الأولى إلى NULL.
خذ بعين الاعتبار المثال التالي:
SELECT COALESCE(SUM(Column_1),0) FROM Table WHERE Column_2 = 'Test'
في هذا الاستعلام، يلتف COALESCE حول الدالة SUM. إذا كان SUM Column_1 للصفوف التي يساوي Column_2 فيها "اختبار" يعرض قيمة NULL، فسيوفر COALESCE بدلاً من ذلك "0".
العرض التوضيحي ومزيد من المعلومات
قم بزيارة http //www.sqlfiddle.com/#!2/d1542/3/0 للحصول على عرض حي لل الحل.للتعمق أكثر في الفروق الدقيقة في COALESCE، فكر في السيناريو التالي الذي يتضمن ثلاثة جداول بتوزيعات مختلفة للقيمة:SELECT 'foo' as table_name, 'mixed null/non-null' as description, 21 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM foo UNION ALL SELECT 'bar' as table_name, 'all non-null' as description, 21 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM bar UNION ALL SELECT 'baz' as table_name, 'all null' as description, 0 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM bazسوف تحصل على ما يلي النتائج:
الوصف | EXPECTED_SUM | ACTUAL_SUM | |
---|---|---|---|
مختلط null/non-null | 21 | 21 | شريط |
21 | 21 | باز | |
0 | 0 | كما يمكنك ملاحظة، تقوم الدالة COALESCE بإرجاع "0" بكفاءة لجدول "baz"، حيث تكون كافة القيم فارغة. |
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3