دالة COALESCE للتعامل مع قيم NULL
جزء من قسم ما وراء الأساسيات في رحلة SQL على Coddy — الدرس 3 من 27.
COALESCE تعيد الوسيط الأول الذي ليس NULL:
COALESCE(nickname, first_name, 'Anonymous')يقرأ من اليسار إلى اليمين ويتوقف عند أول قيمة غير فارغة (non-null). إنها الطريقة الأكثر بساطة لتوفير قيمة احتياطية في استعلام، دون الحاجة إلى CASE.
الاستخدامات الشائعة:
- إظهار
0بدلاً منNULLمنLEFT JOIN:COALESCE(SUM(amount), 0) - اختر أول حقل اختياري غير فارغ:
COALESCE(mobile, home, work)
التحدي
سهلالجداول والأعمدة المتاحة:
<strong>users</strong>:<strong>id</strong>,<strong>display_name</strong>,<strong>email</strong><strong>orders</strong>:<strong>user_id</strong>,<strong>amount</strong>
أعد صفاً واحداً لكل مستخدم يحتوي على:
idlabel:display_nameإذا كان معيناً، وإلاemail، وإلا'unknown'total_spent: مجموعamountطلبات المستخدم؛ المستخدمون الذين ليس لديهم طلبات يجب أن يظهروا0(وليسNULL)
رتب حسب id. تلميح: استخدام LEFT JOIN من users إلى orders بالإضافة إلى COALESCE(SUM(...), 0) يعالج الصفوف المفقودة.
ورقة مرجعية
تعيد COALESCE أول وسيط غير NULL:
COALESCE(nickname, first_name, 'Anonymous')الاستخدامات الشائعة:
- قيمة عرض احتياطية:
COALESCE(mobile, home, work) - استبدال
NULLمن تجميعاتLEFT JOIN:COALESCE(SUM(amount), 0)
جرّب بنفسك
SELECT u.id,
-- label عبر COALESCE
-- total_spent عبر COALESCE(SUM(...), 0)
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id
ORDER BY u.id
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس ما وراء الأساسيات
1المنطق الشرطي
CASE WHENاستخدام CASE في ORDER BYدالة COALESCE للتعامل مع قيم NULLدالتا NULLIF و IIFمراجعة - الحضور