الدرس 4 من 10

البحث بنمط

هدف الدرس

الكلمة LIKE مع الرمز % والرمز _

01

الشرح

يقارن LIKE القيمة بنمط (pattern) لا بقيمة محدّدة، فالرمز % يعني أيّ عدد من الأحرف ولو كان صفرًا، والرمز _ يعني حرفًا واحدًا بالضبط. فالنمط '05%' يطابق كل ما يبدأ بـ05 مهما كان طوله، والنمط '05__' يطابق ما يبدأ بـ05 وطوله أربع خانات تمامًا.

وفي SQLite لا يفرّق LIKE بين الأحرف اللاتينية الكبيرة والصغيرة، فالقيمة 'Khalid@Mail.SA' تطابق النمط '%@mail.sa'، أمّا = فيفرّق بينها، وكذلك يفرّق LIKE نفسه في PostgreSQL، فلا تعتمد على هذا السلوك إن كان استعلامك سيُستعمل في قاعدة بيانات أخرى.

والنمط الواسع قد يلتقط ما لا تريده، فالنمط '%mail.sa' يطابق webmail.sa أيضًا، ولذلك اكتب في النمط ما يحدّد النطاق بدقّة، مثل '%@mail.sa'.

02

المطلوب

اعرض name وemail وphone للعملاء الذين بريدهم على النطاق mail.sa ورقم جوّالهم مكتمل، أي يبدأ بـ05 وطوله عشر خانات بالضبط.

الفحوص

5 فحوص
  1. الأعمدة name وemail وphone
  2. كل عناوين البريد على النطاق mail.sa
  3. لم يسقط أحد بسبب الأحرف الكبيرة
  4. الجوّال عشر خانات تبدأ بـ05
  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');
03

تلميحات

0/3
query.sql
المخرجاتSQLite (sql.js)

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

–/5

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

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