
La fonction SQL ORACLE CONCAT renvoie la concaténation de deux chaines de caractères
CONCAT(chaines1, chaines2)
La fonction CONCAT renvoie la concaténation de deux chaines de caractères
SELECT CONCAT(CONCAT(FIRST_NAME, ' '), LAST_NAME) FROM EMPLOYEES WHERE FIRST_NAME LIKE 'D%'; CONCAT(CONCAT(FIRST_NAME,''),LAST_NAME) ---------------------------------------------- David Austin David Bernstein Daniel Faviet Douglas Grant Danielle Greene David Lee Diana Lorentz Donald OConnell Den Raphaely
Nous pouvons aussi utiliser l’opérateur || pour faire la concaténation des chaines de caractères sous ORACLE
SELECT CONCAT(CONCAT(FIRST_NAME, ' '), LAST_NAME) CONCAT, FIRST_NAME || ' ' || LAST_NAME OPERATEUR FROM EMPLOYEES WHERE FIRST_NAME LIKE 'D%'; CONCAT OPERATEUR ----------------------------------- ---------------------------------- David Austin David Austin David Bernstein David Bernstein Daniel Faviet Daniel Faviet Douglas Grant Douglas Grant Danielle Greene Danielle Greene David Lee David Lee Diana Lorentz Diana Lorentz Donald OConnell Donald OConnell Den Raphaely Den Raphaely
Syntaxe de CONCAT en SQL Oracle
CONCAT(chaine1, chaine2)Attention : en Oracle, CONCAT n'accepte que deux arguments (contrairement à MySQL). Pour en assembler davantage, il faut imbriquer les appels ou utiliser l'opérateur ||.
🧪 Envie de pratiquer ? Exécutez les exemples de cet article dans notre SQL Playground gratuit — aucun logiciel à installer.
L’opérateur || : la méthode recommandée
SELECT prenom || ' ' || nom AS nom_complet FROM employes;C'est la forme la plus lisible et la plus utilisée en Oracle. Avec CONCAT, la même requête devient :
SELECT CONCAT(CONCAT(prenom, ' '), nom) AS nom_complet FROM employes;Exemples pratiques
-- adresse complète
SELECT CONCAT(CONCAT(rue, ', '), CONCAT(code_postal, ' ' || ville)) AS adresse FROM clients;
-- construire un identifiant
SELECT 'EMP-' || LPAD(id, 5, '0') AS matricule FROM employes; -- EMP-00042
-- concaténer un nombre (conversion implicite)
SELECT 'Total : ' || montant || ' MAD' FROM factures;Comment CONCAT gère les valeurs NULL
Oracle traite NULL comme une chaîne vide dans une concaténation — comportement unique parmi les SGBD :
SELECT 'A' || NULL || 'B' FROM DUAL; -- AB (et non NULL)Mais attention à l’effet de bord classique : si prenom est NULL, prenom || ' ' || nom renvoie « Dupont » avec un espace en trop. Sécurisez avec TRIM ou NVL :
SELECT TRIM(NVL(prenom,'') || ' ' || nom) AS nom_complet FROM employes;Agréger plusieurs lignes : LISTAGG
Pour concaténer les valeurs de plusieurs lignes en une seule chaîne, CONCAT ne suffit pas — utilisez LISTAGG :
SELECT departement,
LISTAGG(nom, ', ') WITHIN GROUP (ORDER BY nom) AS equipe
FROM employes GROUP BY departement;Questions fréquentes
Comment concaténer des chaînes en Oracle ?
Deux méthodes : l’opérateur || (recommandé, N chaînes) ou la fonction CONCAT(a, b) (2 arguments seulement) : prenom || ' ' || nom.
CONCAT ou opérateur || : lequel choisir ?
L’opérateur || est plus lisible et accepte autant de chaînes que nécessaire, alors que CONCAT est limité à 2 arguments (il faut les imbriquer). En pratique, || est le standard chez Oracle.
Comment gérer les NULL dans une concaténation Oracle ?
Contrairement à d’autres SGBD, Oracle traite NULL comme une chaîne vide dans une concaténation : 'A' || NULL || 'B' renvoie « AB » — pas besoin de NVL.
