דילוג לתוכן המרכזי
מודול 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 הסטנדרטי לשרשור מחרוזות; CONCAT הוא מתירני יותר (הוא מתעלם מNULLs, בעוד || מפיץ אותם: 'a' || NULL → NULL).

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טוען...

עבור כל לקוח, הצג את האימייל באותיות קטנות (דוא"ל עמודה) ואת השם המלא בתור 'שם_שם_שם_שם' (שם_מלא בעמודה). הזמנה לפי תעודת זהות.

טוען עורך...
הצג רמז

LOWER עבור העמודה הראשונה, || לשרשור עם רווח ביניהם.

הפתרון זמין לאחר 3 ניסיונות

סקירת התרגיל

פעילות גופנית#sql.m6.l1.e2
ניסיונות: 0טוען...

מצא את כל המוצרים המכילים את המילה 'מחשב נייד' (בכל מקרה) בשם. הצג רק את עמודת השם. סדר לפי שם.

טוען עורך...
הצג רמז

ILIKE אינו תלוי רישיות. השתמש ב-'%laptop%' כדי להתאים את 'מחשב נייד' בכל מיקום.

הפתרון זמין לאחר 3 ניסיונות