دروس الوحدة (1/4)
وظائف السلسلة
يحتوي PostgreSQL على العشرات من الوظائف لمعالجة السلاسل. في هذا الدرس
نحن ننظر إلى الأشياء الأكثر شيوعًا في العمل الحقيقي: التطبيع (LOWER/UPPER)،
قياس (LENGTH)، تأليف (|| / CONCAT)، استخلاص (SUBSTRING)،
التنظيف (TRIM)، والاستبدال (REPLACE)، والبحث عن الأنماط
(LIKE / ILIKE).
الوظائف التي سوف نستخدمها
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
غير حساس لحالة الأحرف:
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:
WHERE titolo LIKE '%50\%%' ESCAPE '\'; -- contiene "50%"الجمع بين الوظائف
وظائف تؤلف كما هو الحال في أي لغة:
-- 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;جربه
بالنسبة لكل عميل، أظهر البريد الإلكتروني بأحرف صغيرة (عمود البريد الإلكتروني) والاسم الكامل باسم "الاسم_الأول واسم_العائلة" (الاسم_الكامل للعمود). الطلب حسب المعرف.
إظهار التلميح
أقل للعمود الأول، || للتسلسل مع مسافة بينهما.
الحل متاح بعد 3 من المحاولات
تمرين المراجعة
ابحث عن جميع المنتجات التي تحتوي على كلمة "كمبيوتر محمول" (على أية حال) في اسمها. إظهار عمود الاسم فقط. الطلب بالاسم.
إظهار التلميح
ILIKE غير حساس لحالة الأحرف. استخدم '%laptop%' لمطابقة 'laptop' في أي موضع.
الحل متاح بعد 3 من المحاولات