قد تبدو المقارنة باستخدام = TRUE مكافئة لاختبار IS TRUE، لكنهما لا يعطيان النتيجة نفسها لكل قيمة عددية في MySQL. يمثل الثابت TRUE العدد واحدًا، ولذلك تختبر المقارنة الأولى المساواة مع واحد تحديدًا. أما الاختبار الثاني فيفحص الصدق المنطقي، وتعد القيمة العددية غير الصفرية صادقة.
يظهر الفرق بوضوح عندما يحتوي عمود BOOLEAN على العدد اثنين، وهو أمر يسمح به هذا النوع في MySQL. لا يساوي اثنان واحدًا، لكنه يحقق اختبار الصدق. لذلك يجب ألا تستنتج أن العمود يحتوي على الصفر والواحد فقط من اسمه أو تعريفه. في مقابلات العمل ومراجعات الشيفرة، يكشف هذا المثال الفرق بين القيود الفعلية على البيانات وبين طريقة تقييم التعبيرات. وعندما يفرض التطبيق مجالًا من قيمتين فقط، تختفي هذه الحالة الخاصة للقيم غير الصفرية الأخرى، لكن معنى كل تعبير يظل مختلفًا.
مثال
CREATE TABLE tasks (
done BOOLEAN
);
INSERT INTO tasks (done) VALUES (2);
SELECT done = TRUE AS equals_true,
done IS TRUE AS is_true
FROM tasks;
باختصار: تختبر = TRUE المساواة مع واحد، بينما تختبر IS TRUE الصدق المنطقي.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.