Salt la conținutul principal
Modulul 6 · Lecția 1 din 421/57 în curs~12 min
Lecții din modul (1/4)

Funcții șiruri

PostgreSQL are zeci de funcții pentru manipularea șirurilor. În această lecție ne uităm la cele mai comune în munca reală: normalizarea (LOWER/UPPER), măsurarea (LENGTH), compunerea (|| / CONCAT), extragerea (SUBSTRING), curățare (TRIM), înlocuire (REPLACE) și căutare de modele (LIKE / ILIKE).

Funcțiile pe care le vom folosi

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'

|| este operatorul SQL standard pentru concatenarea șirurilor; CONCAT este mai permisiv ( ignoră NULL-uri, în timp ce || le propagă: 'a' || NULL → NULL).

LIKE și ILIKE: căutarea după model

LIKE caută un model: % = orice secvență, _ = o singură secvență caracter. Este sensibil la majuscule. ILIKE este PostgreSQL Varianta insensibilă la majuscule și minuscule:

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)

Pentru a căuta un literal % sau _ în interiorul modelului, utilizați ESCAPE:

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

Combinarea funcțiilor

Funcțiile compun ca în orice limbă:

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;

Încearcă

Exercițiu#sql.m6.l1.e1
Încercări: 0Se încarcă…

Pentru fiecare client, afișați e-mailul cu litere mici (coloana de e-mail) și numele complet ca „first_name last_name” (coloana full_name). Comandă după id.

Se încarcă editorul...
Afișează indiciu

JOS pentru prima coloană, || a se concatena cu un spațiu între ele.

Soluție disponibilă după 3 încercări

Exercițiu de revizuire

Exercițiu#sql.m6.l1.e2
Încercări: 0Se încarcă…

Găsiți toate produsele care conțin cuvântul „laptop” (în orice caz) în nume. Afișați numai coloana cu nume. Ordonați după nume.

Se încarcă editorul...
Afișează indiciu

ILIKE nu face distincție între majuscule și minuscule. Utilizați „%laptop%” pentru a potrivi „laptop” în orice poziție.

Soluție disponibilă după 3 încercări