لا تعتبر المقارنة العادية باستخدام = قيمتي NULL متساويتين. إذا كان عمود الربط فارغا في صف من كل جدول، فإن التعبير الذي يقارن القيمتين لا يكون صحيحا، ولذلك لا يتكون زوج مطابق اعتمادا على هذه المقارنة. هذه نقطة مهمة عند ربط بيانات تحتوي على رموز أو تصنيفات اختيارية.
يوفر MySQL العامل <=> للمساواة الآمنة مع القيم الفارغة. يعيد هذا العامل قيمة صحيحة عندما يكون الطرفان NULL، كما يقارن القيم غير الفارغة بصورة معتادة. لكنه يغير معنى العلاقة، لذلك نستخدمه فقط عندما يعتبر تعريف البيانات القيم الفارغة متطابقة في هذا السياق.
مثال
SELECT a.id, b.id
FROM tasks AS a
INNER JOIN tasks AS b
ON a.category_code <=> b.category_code
AND a.id < b.id;
إذا وجدت عدة صفوف فارغة في الطرفين، فقد ينتج عدد كبير من المطابقات بينها. مساواة القيم الفارغة لا تعني اختيار صف واحد تلقائيا من كل مجموعة.
باختصار: لا تطابق = قيمتي NULL، بينما يسمح <=> بذلك في MySQL عند الحاجة.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.