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
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:
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:
WHERE titolo LIKE '%50\%%' ESCAPE '\'; -- contiene "50%"Combinarea funcțiilor
Funcțiile compun ca în orice limbă:
-- 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ă
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.
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
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.
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