Leçon 3 / 9 — Chapitre 1: Fonctions texte approfondies
CONCAT() : assembler du texte en toute sécurité
CONCAT(valeur1, valeur2, ...) assemble plusieurs valeurs, exactement comme || — avec une différence essentielle face aux valeurs NULL.
SELECT CONCAT(nom, ' <', email, '>') FROM clients WHERE id = 1;
→ 'Emma emma@mail.com'.
Le client d'id 3 (Nina) a un email à NULL. Avec ||, une seule valeur NULL rend tout le résultat NULL :
SELECT nom || email FROM clients WHERE id = 3;
→ NULL (alors que nom vaut bien 'Nina').
CONCAT, lui, traite NULL comme une chaîne vide plutôt que de propager NULL :
SELECT CONCAT(nom, email) FROM clients WHERE id = 3;
→ 'Nina' (email, NULL, est simplement ignoré).
À retenir :
CONCAT(a, b, ...)assemble plusieurs valeurs, comme||.||propageNULL: si une seule valeur assemblée estNULL, le résultat entier devientNULL.CONCATtraiteNULLcomme une chaîne vide : il ignore silencieusement les valeurs manquantes plutôt que de tout annuler.
À vous de jouer : sur le client d'id 4 (noé), dont date_inscription vaut NULL, comparez nom || date_inscription et CONCAT(nom, date_inscription).
À vous de jouer
À faireVoici une table clients :
clients
id | nom | email | date_inscription | montant | statut
1 | Emma | emma@mail.com | 2024-03-15 | 120.456 | actif
2 | LUCAS | lucas@mail.com | 2024-04-02 | 85.2 | actif
3 | Nina | (NULL) | 2024-04-02 | 200 | inactif
4 | noé | noe@mail.com | (NULL) | 60.75 | actif
5 | Emma | emma@mail.com | 2024-03-15 | 120.456 | actif
6 | Sophie | sophie@mail.com | 2024-05-20 | -150 | inactif
Que retourne SELECT CONCAT(nom, ' <', email, '>') FROM clients WHERE id = 1; ?
Testez cette requête dans un bac à sable SQL en ligne (SQLite Fiddle, W3Schools "Try SQL", ou tout autre) pour vérifier le résultat avant de répondre.
💡 Le texte assemblé exactement.
À vous de jouer
À faireVoici une table clients où le client d'id 3 (Nina) a un email NULL :
clients
id | nom | email | ...
3 | Nina | (NULL) | ...
SELECT nom || email FROM clients WHERE id = 3; renvoie-t-il NULL ? Répondez par oui ou non.
Testez cette requête dans un bac à sable SQL en ligne (SQLite Fiddle, W3Schools "Try SQL", ou tout autre) pour vérifier le résultat avant de répondre.
💡 Oui ou non.
À vous de jouer
À faireDans ce même scénario (email NULL pour Nina), SELECT CONCAT(nom, email) FROM clients WHERE id = 3; renvoie-t-il NULL ? Répondez par oui ou non.
Testez cette requête dans un bac à sable SQL en ligne (SQLite Fiddle, W3Schools "Try SQL", ou tout autre) pour vérifier le résultat avant de répondre.
💡 Oui ou non.