Travailler avec des données textuelles, c’est le pain quotidien quand tu fais de la base de données. Imagine que t’es dev pour un site e-commerce et que t’as une base d’utilisateurs. Tu dois afficher les noms complets des utilisateurs pour une bannière de bienvenue sur le site, genre : "Bienvenue, Otto Art !". Ou alors tu veux standardiser toutes les adresses email (genre tout passer en minuscules). Dans ces cas-là, tu peux pas te passer des opérations sur les chaînes.
PostgreSQL te file des outils puissants pour gérer le texte. Aujourd’hui, on va voir trois outils de base :
CONCAT()— pour coller des chaînes ensemble.UPPER()— pour mettre une chaîne en majuscules.LOWER()— pour mettre une chaîne en minuscules.
Bosser avec la fonction CONCAT()
La fonction CONCAT() te permet de fusionner plusieurs chaînes en une seule. Elle est super utile si tes données sont dans des colonnes différentes mais que tu veux les afficher ensemble.
Syntaxe
CONCAT(string1, string2, ..., stringN)
string1,string2,stringN— les chaînes ou colonnes que tu veux coller ensemble.- Ça te renvoie une seule chaîne avec tous les arguments collés.
Exemple : on bosse avec les prénoms et noms
Imaginons qu’on a une table students :
| first_name | last_name |
|---|---|
| Otto | Art |
| Maria | Chi |
| Anna | Pal |
Notre mission : afficher les noms complets des étudiants au format "Prénom Nom".
Requête :
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM students;
Résultat :
| full_name |
|---|
| Otto Art |
| Maria Chi |
| Anna Pal |
Fais gaffe au ' ' entre le prénom et le nom. C’est juste un espace qu’on a ajouté pour séparer les chaînes.
Petites subtilités
CONCAT() ignore NULL. Si un des arguments vaut NULL, il est juste zappé. Si tu sais pas encore ce que c’est NULL, t’inquiète — on en parlera un peu plus tard.
Alternative à CONCAT() — l’opérateur ||, genre :
SELECT first_name || ' ' || last_name AS full_name FROM students;
Changer la casse des chaînes : UPPER() et LOWER()
Imagine que tu bosses avec des adresses email que les utilisateurs ont tapées dans tous les sens : ivan@example.com, IVAN@EXAMPLE.COM. Pour standardiser, souvent tu veux :
- mettre tout dans le même style avant de comparer (genre
lowercase). - mettre en valeur des mots importants (genre
UPPERCASEpour les titres).
UPPER() : texte en majuscules
La fonction UPPER() transforme ton texte en lettres capitales.
Syntaxe :
UPPER(string)
string— la chaîne ou le nom de la colonne texte.
Exemple :
Dans la table students, on a ajouté une colonne email :
| first_name | last_name | |
|---|---|---|
| Otto | Art | otto@example.com |
| Maria | Chi | MARIA@EXAMPLE.com |
| Anna | Pal | anna.pal@mail.ru |
On veut afficher les emails en majuscules :
SELECT email, UPPER(email) AS email_upper
FROM students;
Résultat :
| email_upper | |
|---|---|
| otto@example.com | OTTO@EXAMPLE.COM |
| MARIA@EXAMPLE.com | MARIA@EXAMPLE.COM |
| anna.pal@gmail.com | ANNA.PAL@GMAIL.COM |
LOWER() : texte en minuscules
Pareil, la fonction LOWER() met ton texte en minuscules.
Syntaxe :
LOWER(string)
Exemple :
On passe les emails en minuscules :
SELECT email, LOWER(email) AS email_lower
FROM students;
Résultat :
| email_lower | |
|---|---|
| otto@example.com | otto@example.com |
| MARIA@EXAMPLE.com | maria@example.com |
| anna.pal@gmail.com | anna.pal@gmail.com |
Exemples pratiques et cas d’usage
Allez, on mélange tout ce qu’on a vu.
Créer un nom complet en majuscules
Requête :
SELECT CONCAT(UPPER(first_name), ' ', UPPER(last_name)) AS full_name_upper
FROM students;
Résultat :
| full_name_upper |
|---|
| OTTO ART |
| MARIA CHI |
| ANNA PAL |
Ici, on a utilisé CONCAT() pour coller prénom et nom, et UPPER() pour tout mettre en majuscules.
Exemple : standardiser les adresses email
On veut que toutes les adresses email soient en minuscules :
UPDATE students
SET email = LOWER(email);
Maintenant, tous les emails dans la table sont au même format, peu importe comment ils étaient à la base.
Comment marche l’opérateur UPDATE ? Tu verras ça dans les prochaines leçons.
Préparer un message de bienvenue pour les utilisateurs
On ajoute un "Bienvenue" devant le nom complet :
SELECT CONCAT('Bienvenue, ', first_name, ' ', last_name, '!') AS greeting
FROM students;
Résultat :
| greeting |
|---|
| Bienvenue, Otto Art! |
| Bienvenue, Maria Chi! |
| Bienvenue, Anna Pal! |
Erreurs classiques avec les fonctions texte
Si tu oublies l’espace dans CONCAT(), le résultat peut être bizarre. Par exemple :
SELECT CONCAT(first_name, last_name) AS full_name
FROM students;
Le résultat sera : "OttoArt", "MariaChi". Pense toujours à mettre un espace où il faut.
Utilisation de NULL. Si un des arguments de CONCAT() vaut NULL, la chaîne peut être incomplète. Par exemple :
SELECT CONCAT(first_name, ' ', middle_name, ' ', last_name) AS full_name
FROM students;
Si middle_name = NULL, alors le résultat sera "Otto NULL Art". Pour éviter ça, tu peux utiliser la fonction COALESCE() :
SELECT CONCAT(first_name, ' ', COALESCE(middle_name, ''), ' ', last_name) AS full_name
FROM students;
On verra plus en détail NULL et la fonction COALESCE() dans les prochaines leçons :P
GO TO FULL VERSION