لماذا تعيد CONCAT قيمة NULL عند دمج النصوص في MySQL؟

متوسطقراءة دقيقةآخر تحديث 3 أكتوبر 2026

SQL قواعد البيانات

الإجابة

تعيد الدالة CONCAT قيمة NULL إذا كان أي وسيط من وسائطها يساوي NULL. لذلك قد تختفي عبارة كاملة من نتائج العرض بسبب جزء اختياري مفقود، رغم أن بقية الأجزاء تحتوي على نصوص صحيحة. يحدث هذا مثلًا عند دمج بادئة ثابتة مع ملاحظة غير موجودة لبعض الطلبات.

يتحدد الحل بحسب الجزء الذي تريد الاحتفاظ به. إذا أردت بقاء البادئة مع استخدام بديل للملاحظة، فعالج الملاحظة داخل CONCAT قبل الدمج. أما معالجة نتيجة الدمج كلها بعد انتهائه فستستبدل العبارة بأكملها عند ظهور NULL، وقد تفقد البادئة التي كنت تريد عرضها دائمًا.

مثال

SELECT CONCAT('Note: ', IFNULL(NULL, 'Missing')) AS label;

يعرض المثال Note: Missing لأن الجزء المفقود استبدل أولًا. لو وضعت IFNULL حول عملية الدمج كاملة، فإن البديل الخارجي سيحل محل الناتج كله.

باختصار: عالج الوسيط الاختياري داخل CONCAT عندما تريد الحفاظ على النصوص الأخرى، ولا تفترض أن الدالة تتجاهل القيم المفقودة.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر فهمك

أي تعبير يعرض Note: Missing إذا كانت note تساوي NULL، ويعرض البادئة نفسها مع الملاحظة عند وجودها؟