
🧪 Envie de pratiquer ? Exécutez les exemples de cet article dans notre SQL Playground gratuit — aucun logiciel à installer.
- RTRIM()
La fonction RTRIM permet d’enlever les espaces qui existent à la fin d’une chaine de caractère
SELECT RTRIM(' Bonjour ') FROM DUAL;
RTRIM('BONJOUR')
----------------------Bonjour
- LTRIM()
La fonction LTRIM permet d’enlever les espaces qui sont au debut d’une chaine de caractère
SELECT '|' || LTRIM(' Bonjour ') || '|' FROM DUAL;
'|'||LTRIM('BONJOUR')||'|'
--------------------------
|Bonjour |
Syntaxe de RTRIM et LTRIM en SQL Oracle
LTRIM(chaine [, caracteres]) -- nettoie à GAUCHE (Left)
RTRIM(chaine [, caracteres]) -- nettoie à DROITE (Right)Sans second argument, ces fonctions suppriment les espaces. Avec un second argument, elles suppriment tout caractère présent dans l'ensemble fourni, tant qu'elles en rencontrent.
| Expression | Résultat | Explication |
|---|---|---|
LTRIM(' SQL') | 'SQL' | espaces de gauche supprimés |
RTRIM('SQL ') | 'SQL' | espaces de droite supprimés |
LTRIM('000123', '0') | '123' | zéros de tête supprimés |
RTRIM('prix;;;', ';') | 'prix' | points-virgules de fin |
RTRIM('abcxyz', 'zyx') | 'abc' | un ensemble, pas une chaîne |
Point clé : le second argument est un ensemble de caractères, pas un mot. RTRIM('abcxyz', 'zyx') retire z, puis y, puis x : il ne cherche pas la sous-chaîne « zyx ».
Exemples pratiques
-- Nettoyer une saisie utilisateur des deux côtés
SELECT LTRIM(RTRIM(' Jean Dupont ')) FROM DUAL; -- 'Jean Dupont'
-- Supprimer les zéros de tête d'un code article
SELECT LTRIM('0000456789', '0') FROM DUAL; -- '456789'
-- Nettoyer une colonne avant comparaison
SELECT * FROM clients WHERE RTRIM(code_postal) = '75001';
-- Enlever un séparateur final construit par une boucle
SELECT RTRIM('pomme,poire,cerise,', ',') FROM DUAL; -- 'pomme,poire,cerise'RTRIM, LTRIM ou TRIM : lequel utiliser ?
| Fonction | Ce qu’elle nettoie | Second argument |
|---|---|---|
LTRIM | à gauche uniquement | un ensemble de caractères |
RTRIM | à droite uniquement | un ensemble de caractères |
TRIM | les deux côtés (par défaut) | un seul caractère |
TRIM(LEADING/TRAILING/BOTH ...) | au choix | un seul caractère |
-- Ces deux lignes sont équivalentes
SELECT TRIM(' SQL ') FROM DUAL;
SELECT LTRIM(RTRIM(' SQL ')) FROM DUAL;
-- TRIM n'accepte qu'UN caractère : ceci échoue (ORA-30001)
-- SELECT TRIM('xy' FROM 'xySQLyx') FROM DUAL;
-- Alors que LTRIM/RTRIM acceptent un ensemble
SELECT LTRIM(RTRIM('xySQLyx', 'xy'), 'xy') FROM DUAL; -- 'SQL'Erreurs fréquentes
- Croire que le 2e argument est une chaîne — c'est le piège n°1.
RTRIM('fichier.txt', '.txt')renvoie'fichier'et non'fichier.', car il retire aussi le point. - Colonne CHAR au lieu de VARCHAR2 — une colonne
CHAR(10)est complétée par des espaces ; nettoyer à l'affichage ne règle pas le fond, changez le type. - RTRIM dans un WHERE sur colonne indexée —
WHERE RTRIM(code) = 'X'empêche l'usage de l'index. Nettoyez les données à l'insertion plutôt qu'à la lecture. - Attention aux tabulations —
LTRIMsans argument ne retire que les espaces, pas les tabulations. UtilisezLTRIM(chaine, ' ' || CHR(9)).
