الانتقال إلى المحتوى الرئيسي
الوحدة 6 · الدرس 1 من 421/57 في الدورة~12 min
دروس الوحدة (1/4)

وظائف السلسلة

يحتوي PostgreSQL على العشرات من الوظائف لمعالجة السلاسل. في هذا الدرس نحن ننظر إلى الأشياء الأكثر شيوعًا في العمل الحقيقي: التطبيع (LOWER/UPPER)، قياس (LENGTH)، تأليف (|| / CONCAT)، استخلاص (SUBSTRING)، التنظيف (TRIM)، والاستبدال (REPLACE)، والبحث عن الأنماط (LIKE / ILIKE).

الوظائف التي سوف نستخدمها

SQL
LOWER('Alice')                -- 'alice'
UPPER('alice')                -- 'ALICE'
LENGTH('alice')               -- 5
'a' || 'b'                    -- 'ab'  (concatenazione)
CONCAT('a', 'b', 'c')         -- 'abc' (versione "funzione")
SUBSTRING('hello' FROM 2 FOR 3) -- 'ell'
TRIM(' alice ')               -- 'alice'
REPLACE('foo bar', 'bar','x') -- 'foo x'

|| هو عامل تشغيل SQL القياسي لتسلسل السلاسل؛ محمي_INLINE_11 هو أكثر تساهلاً (فهو يتجاهل NULLs، بينما يقوم || بنشرها: محمي_INLINE_14 → محمي_INLINE_15).

LIKE وILIKE: البحث حسب النمط

LIKE يبحث عن نمط: % = أي تسلسل، _ = فردي حرف. إنها حساسة لحالة الأحرف. ILIKE هو PostgreSQL غير حساس لحالة الأحرف:

SQL
WHERE name LIKE  '%Cuffie%'   -- match esatto "Cuffie"
WHERE name ILIKE '%cuffie%'   -- match anche "CUFFIE", "Cuffie", "cuffie"
WHERE email LIKE  '%@example.com'
WHERE first_name LIKE 'A_____'  -- inizia per A, lungo 6 (A + 5 caratteri)

للبحث عن % أو _ داخل النمط، استخدم ESCAPE:

SQL
WHERE titolo LIKE '%50\%%' ESCAPE '\';   -- contiene "50%"

الجمع بين الوظائف

وظائف تؤلف كما هو الحال في أي لغة:

SQL
-- Email "normalizzata" e iniziali in maiuscolo:
SELECT LOWER(email) AS email_norm,
       UPPER(SUBSTRING(first_name FROM 1 FOR 1)) || '.'
       || UPPER(SUBSTRING(last_name  FROM 1 FOR 1)) || '.' AS iniziali
FROM   customers
ORDER BY id;

جربه

تمرين#sql.m6.l1.e1
المحاولات: 0جارٍ التحميل…

بالنسبة لكل عميل، أظهر البريد الإلكتروني بأحرف صغيرة (عمود البريد الإلكتروني) والاسم الكامل باسم "الاسم_الأول واسم_العائلة" (الاسم_الكامل للعمود). الطلب حسب المعرف.

جارٍ تحميل المحرر…
إظهار التلميح

أقل للعمود الأول، || للتسلسل مع مسافة بينهما.

الحل متاح بعد 3 من المحاولات

تمرين المراجعة

تمرين#sql.m6.l1.e2
المحاولات: 0جارٍ التحميل…

ابحث عن جميع المنتجات التي تحتوي على كلمة "كمبيوتر محمول" (على أية حال) في اسمها. إظهار عمود الاسم فقط. الطلب بالاسم.

جارٍ تحميل المحرر…
إظهار التلميح

ILIKE غير حساس لحالة الأحرف. استخدم '%laptop%' لمطابقة 'laptop' في أي موضع.

الحل متاح بعد 3 من المحاولات