كيفية استرداد "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 | |
---|---|---|---|
21 | 21 | شريط | |
21 | 21 | باز | |
0 | 0 | كما يمكنك ملاحظة، تقوم الدالة COALESCE بكفاءة بإرجاع "0" لـ ' جدول baz، حيث تكون كافة القيم فارغة. |
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3