"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إرجاع \'0\' بدلاً من NULL عند استخدام وظيفة SUM الخاصة بـ MySQL على مجموعات البيانات الفارغة؟

كيفية إرجاع \'0\' بدلاً من NULL عند استخدام وظيفة SUM الخاصة بـ MySQL على مجموعات البيانات الفارغة؟

تم النشر بتاريخ 2024-11-08
تصفح:314

How to Return \'0\' Instead of NULL When Using MySQL\'s SUM Function on Empty Datasets?

كيفية استرداد "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، فكر في السيناريو التالي الذي يتضمن ثلاثة جداول بتوزيعات مختلفة للقيمة:

    يحتوي الجدول 'foo' على مزيج من NULL وغير- قيم NULL.
  • يحتوي الجدول 'bar' فقط على قيم غير NULL.
  • يحتوي الجدول 'baz' حصريًا على NULL القيم.
من خلال تطبيق الاستعلام التالي:

اختر 'foo' كـ table_name، "مختلط فارغ/غير فارغ" كما هو موضح، 21 كما هو متوقع_المجموع، COALESCE(SUM(val), 0) كـ act_sum من فو الاتحاد الكل حدد "شريط" كـ table_name، "الكل غير فارغ" كما هو موضح، 21 كما هو متوقع_المجموع، COALESCE(SUM(val), 0) كـ act_sum من شريط الاتحاد الكل حدد "baz" كـ table_name، "الكل فارغ" كما هو موضح، 0 كما هو متوقع_المجموع، COALESCE(SUM(val), 0) كـ act_sum من باز
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
سوف تحصل على ما يلي النتائج:

TABLE_NAME الوصف EXPECTED_SUM ACTUAL_SUM ]] foo شريطجميع غير فارغة2121الكل null
مختلط null/non-null2121
باز
00كما يمكنك ملاحظة، تقوم الدالة COALESCE بإرجاع "0" بكفاءة لجدول "baz"، حيث تكون كافة القيم فارغة.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3