AzLearn

LIKE و IN و BETWEEN و NULL

LIKE, IN, BETWEEN, and NULL

مفهوم ~18 دقيقة

LIKE و IN و BETWEEN و NULL

LIKE يبحث بنمط نصي. الرمز % يعني أي عدد من الأحرف. IN يفحص أن القيمة ضمن قائمة. BETWEEN يفحص نطاقاً شاملاً للطرفين — أي x BETWEEN a AND b تساوي x >= a AND x <= b. أما NULL فله قاعدة خاصة: لا تفحصه بـ= NULL; استخدم IS NULL أو IS NOT NULL.

للنطاق نصف-المفتوح (مفيد للتواريخ لتفادي مشاكل نهاية اليوم): استخدم >= start AND < end بدلاً من BETWEEN.

NULL يعني غياب القيمة أو أنها غير معروفة. لا يساوي النص الفارغ، ولا يساوي الصفر. هذه النقطة مهمة جداً في التقارير. إذا تجاهلت NULL، قد تظهر أرقام ناقصة أو شروط لا تعمل كما تتوقع.

مثال عملي

query.sql

العميلة التي city لها NULL لن تظهر لأنها لا تطابق القائمة.

تعامل صريح مع NULL

لو أردت العملاء دون مدينة، اكتب WHERE city IS NULL. لا تعتمد على المقارنات العادية.

COALESCE و IFNULL و NULLIF — بدائل لـ NULL

SQL يوفر دوالاً للتعامل مع NULL في التعابير لا في الشروط:

الدالةالدعمالفائدة
COALESCE(a, b, c)كل القواعدأول قيمة غير NULL في القائمة
IFNULL(a, b)SQLite / MySQLإذا كان a NULL أعد b (معادلة ثنائية لـ COALESCE)
NULLIF(a, b)كل القواعدأعد NULL إذا كان a = b، وإلا أعد a

مثال:

-- أظهر 'غير محدد' بدلاً من NULL في عمود city
SELECT name, COALESCE(city, 'غير محدد') AS city_label
FROM customers;

-- IFNULL مكافئة في SQLite
SELECT name, IFNULL(city, 'غير محدد') AS city_label
FROM customers;

COALESCE هي الخيار المحمول عبر قواعد البيانات. استخدم IFNULL فقط في كود مربوط بـSQLite أو MySQL.

تحدي — Challenge