
La fonction ORACLE REPLACE prend trois arguments de type chaine de caractère (arg1, arg2 et arg3) et retourne une chaine de caractère.
REPLACE(arg1, arg2, arg3)
Cette fonction retourne le contenu de l’argument arg1 en remplacent toutes les occurrences de la chaine arg2 dans arg1 par la chaine arg3.
Exemple:
SELECT REPLACE('Bonjour Le Monde', 'o', 'X') FROM DUAL;
REPLACE('BONJOURLEMONDE','O','X')
---------------------------------
BXnjXur Le MXnde
Nous pouvons aussi utiliser cette fonction en utilisant deux paramètres, dans ce cas l’occurrence de l’argument arg2 sera remplacer par nulle
SELECT REPLACE('Bonjour Le Monde', 'o') FROM DUAL;
REPLACE('BONJOURLEMONDE','O')
---------------------------------
Bnjur Le Mnde
Syntaxe de REPLACE en SQL Oracle
REPLACE(chaine, chaine_recherchee [, chaine_remplacement])REPLACE remplace toutes les occurrences de chaine_recherchee. Si le troisième argument est omis ou NULL, les occurrences sont simplement supprimées.
🧪 Envie de pratiquer ? Exécutez les exemples de cet article dans notre SQL Playground gratuit — aucun logiciel à installer.
Exemples pratiques de REPLACE
SELECT REPLACE('COURS SQL ORACLE', 'ORACLE', 'PLSQL') FROM DUAL;
-- COURS SQL PLSQL
SELECT REPLACE('01.23.45.67.89', '.', '') FROM DUAL;
-- 0123456789 (suppression des points)
SELECT REPLACE('01 23 45 67 89', ' ', '-') FROM DUAL;
-- 01-23-45-67-89Nettoyer des données avant import :
UPDATE clients
SET telephone = REPLACE(REPLACE(REPLACE(telephone,' ',''),'.',''),'-','');Normaliser un montant texte en nombre :
SELECT TO_NUMBER(REPLACE(montant_txt, ',', '.')) AS montant FROM imports;REPLACE vs TRANSLATE vs REGEXP_REPLACE
| Fonction | Ce qu’elle fait | Exemple |
|---|---|---|
| REPLACE | Remplace une chaîne entière | REPLACE(t,’ABC’,’X’) |
| TRANSLATE | Remplace caractère par caractère | TRANSLATE(t,’ABC’,’XYZ’) |
| REGEXP_REPLACE | Remplace selon une expression régulière | REGEXP_REPLACE(t,'[0-9]+’,’#’) |
-- supprimer tout ce qui n'est pas un chiffre
SELECT REGEXP_REPLACE('01.23-45 67', '[^0-9]', '') FROM DUAL; -- 01234567Erreurs fréquentes avec REPLACE
- REPLACE est sensible à la casse :
REPLACE('Oracle','oracle','X')ne remplace rien. UtilisezREGEXP_REPLACE(..., 'i')ouUPPER(). - Chaîne source NULL : le résultat est NULL, pas la chaîne d’origine.
- REPLACE dans un WHERE : empêche l’utilisation des index sur la colonne.
Questions fréquentes
Comment remplacer un caractère dans une chaîne Oracle ?
REPLACE(chaine, 'ancien', 'nouveau') remplace TOUTES les occurrences : REPLACE('2026-01-15', '-', '/') renvoie « 2026/01/15 ».
Comment supprimer un caractère avec REPLACE ?
Omettez le 3e argument : REPLACE('AB-CD-EF', '-') renvoie « ABCDEF ». Sans chaîne de remplacement, Oracle supprime les occurrences.
Quelle différence entre REPLACE et TRANSLATE ?
REPLACE remplace une sous-chaîne entière par une autre ; TRANSLATE remplace caractère par caractère : TRANSLATE('ABC', 'AC', 'XZ') renvoie « XBZ ».
