REPLACE Oracle : remplacer du texte dans une chaîne SQL

Illustration du tutoriel SQL Oracle : Fonction SQL ORACLE – REPLACE()

La fonction ORACLE REPLACE prend trois arguments de type chaine de caractère (arg1, arg2 et arg3) et retourne une chaine de caractère.

Publicité
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-89

Nettoyer 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

FonctionCe qu’elle faitExemple
REPLACERemplace une chaîne entièreREPLACE(t,’ABC’,’X’)
TRANSLATERemplace caractère par caractèreTRANSLATE(t,’ABC’,’XYZ’)
REGEXP_REPLACERemplace selon une expression régulièreREGEXP_REPLACE(t,'[0-9]+’,’#’)
-- supprimer tout ce qui n'est pas un chiffre
SELECT REGEXP_REPLACE('01.23-45 67', '[^0-9]', '') FROM DUAL;  -- 01234567

Erreurs fréquentes avec REPLACE

  • REPLACE est sensible à la casse : REPLACE('Oracle','oracle','X') ne remplace rien. Utilisez REGEXP_REPLACE(..., 'i') ou UPPER().
  • 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 ».

Sur le même thème

Un nouveau tutoriel SQL par semaine

Nous ne spammons pas ! Consultez notre politique de confidentialité pour plus d’informations.

Publicité

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Cours SQL & Oracle — 100% gratuitVoir les cours →