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

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

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

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' على مزيج من القيم الفارغة وغير الفارغة.
  • يحتوي الجدول 'bar' فقط على قيم غير فارغة.
  • يحتوي الجدول '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 من baz
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_NAMEfoo مختلط لاغية / غير فارغة 2121 شريط جميع غير فارغة 21 21 باز all null00كما يمكنك ملاحظة، تقوم الدالة COALESCE بكفاءة بإرجاع "0" لـ ' جدول baz، حيث تكون كافة القيم فارغة.
الوصفEXPECTED_SUMACTUAL_SUM
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3