PaliSkill
← SQL avancé

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 ||.
  • || propage NULL : si une seule valeur assemblée est NULL, le résultat entier devient NULL.
  • CONCAT traite NULL comme 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

À faire

Voici 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

À faire

Voici 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

À faire

Dans 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.

Quitter le module