الدرس 8 من 10

القيمة المفقودة

هدف الدرس

القيمة NULL والدالة COALESCE

01

الشرح

ليست NULL قيمة، بل تعني أنّ القيمة غائبة أو غير معروفة، وأيّ مقارنة معها تكون نتيجتها NULL أيضًا، فلا هي صحيحة ولا خاطئة، وWHERE لا يُبقي إلا الصفوف التي يكون الشرط فيها صحيحًا.

ولهذا لا يطابق WHERE email = NULL أيّ صفّ، حتى الصفوف التي بريدها فارغ فعلًا، ولا يعطيك رسالة خطأ، والصحيح أن تستعمل IS NULL وIS NOT NULL. ومثل ذلك الشرط email <> 'x'، فهو يُسقط صفوف NULL دون أن تنتبه.

أمّا COALESCE(a, b) فتُرجع أول قيمة ليست NULL، فتستطيع بها أن تضع قيمة بديلة واضحة مكان القيمة الغائبة.

02

المطلوب

اعرض name وphone للعملاء الذين لا بريد لهم، وضع 'لا يوجد' مكان رقم الجوّال المفقود، وسمِّ العمود الثاني phone.

الفحوص

5 فحوص
  1. العمودان name وphone
  2. ظهر كل من لا بريد له باستعمال IS NULL
  3. لا توجد قيمة NULL في عمود phone
  4. الجوّال المفقود صار «لا يوجد»
  5. الأرقام الموجودة بقيت كما هي
الجداول المتاحة في هذا الدرس
CREATE TABLE customers (
  id    INTEGER PRIMARY KEY,
  name  TEXT NOT NULL,
  email TEXT,
  phone TEXT
);

INSERT INTO customers (name, email, phone) VALUES
  ('ليان', 'layan@mail.sa',   '0551234567'),
  ('خالد', 'Khalid@Mail.SA',  '0509876543'),
  ('ريم',  NULL,              '0543216789'),
  ('سارة', 'sara@gmail.com',  NULL),
  ('فهد',  NULL,              NULL),
  ('نورة', 'noura@mail.sa',   '055123456'),
  ('عمر',  'omar@webmail.sa', '0561112233'),
  ('هند',  'hind@mail.sa',    '0598765432'),
  ('يوسف', NULL,              '0533334444');
query.sql
المخرجاتSQLite (sql.js)

نحمّل بيئة SQLite الآن.

–/5

يبدأ الفحص حين تجهز البيئة.

تجد 5 فحوص في بطاقة «المطلوب».