Leçons du module (1/4)
Fonctions de chaînes
PostgreSQL possède des dizaines de fonctions pour manipuler les chaînes. Dans cette leçon
nous examinons les plus courants dans le travail réel : la normalisation (LOWER/UPPER),
mesurer (LENGTH), composer (|| / CONCAT), extraire (SUBSTRING),
nettoyage (TRIM), substitution (REPLACE) et recherche de modèles
(LIKE / ILIKE).
Les fonctions que nous utiliserons
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'|| est l'opérateur SQL standard pour concaténer des chaînes ; CONCAT est
plus permissif (il ignore les NULL, alors que || les propage :
'a' || NULL → NULL).
LIKE et ILIKE : recherche par modèle
LIKE recherche un modèle : % = n'importe quelle séquence, _ = un seul
personnage. Il est sensible à la casse. ILIKE est le PostgreSQL
Variante insensible à la casse :
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)Pour rechercher un littéral % ou _ à l'intérieur du modèle, utilisez ESCAPE :
WHERE titolo LIKE '%50\%%' ESCAPE '\'; -- contiene "50%"Combinaison de fonctions
Les fonctions composent comme dans n'importe quel langage :
-- 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;Essayez-le
Pour chaque client, affichez l'e-mail en minuscules (colonne email) et le nom complet sous la forme « prénom nom_nom » (colonne nom_complet). Commande par identifiant.
Afficher l'indice
INFÉRIEUR pour la première colonne, || pour concaténer avec un espace entre les deux.
Solution disponible après 3 tentatives
Exercice de révision
Recherchez tous les produits dont le nom contient le mot « ordinateur portable » (dans tous les cas). Afficher uniquement la colonne de nom. Commandez par nom.
Afficher l'indice
ILIKE n'est pas sensible à la casse. Utilisez « %laptop% » pour faire correspondre « laptop » dans n'importe quelle position.
Solution disponible après 3 tentatives