Dans Oracle, le RTRIM()
La fonction vous permet de couper la partie droite d'une chaîne. Par défaut, il supprime les espaces blancs, mais vous pouvez éventuellement spécifier un ou plusieurs caractères différents à supprimer.
Syntaxe
La syntaxe ressemble à ceci :
RTRIM(char [, set ])
Où char
et set
peut être l'un des types de données CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
, ou NCLOB
.
RTRIM
supprime de l'extrémité droite de char
tous les caractères contenus dans set
. Si vous ne spécifiez pas set
, alors il s'agit par défaut d'un seul blanc.
Exemple
Voici un exemple :
SELECT RTRIM('Cat ')
FROM DUAL;
Résultat :
RTRIM('CAT') _______________ Cat
Ici, je n'ai pas spécifié quel(s) caractère(s) couper, et donc chaque blanc a été coupé à partir de la partie droite de la chaîne.
Il n'est pas facile de voir l'effet de l'exemple ci-dessus.
Voici un autre exemple, la chaîne étant concaténée avec une autre chaîne, tout en comparant la sortie avec la chaîne d'origine (non découpée) :
SELECT 'Cat ' || 'Food'
FROM DUAL
UNION ALL
SELECT RTRIM('Cat ') || 'Food'
FROM DUAL;
Résultat :
'CAT'||'FOOD' ________________ Cat Food CatFood
Spécifiez un caractère
Dans cet exemple, je spécifie un caractère à couper. Cela permet de voir plus facilement l'effet :
SELECT RTRIM('...Cat...', '.')
FROM DUAL;
Résultat :
RTRIM('...CAT...','.') _________________________ ...Cat
Nous pouvons donc voir que le personnage a été coupé du côté droit mais pas du côté gauche. Pour couper le côté gauche, utilisez LTRIM()
ou TRIM()
.
Notez que RTRIM()
ne coupe que le ou les caractères dans la configuration jusqu'à ce qu'il y ait un caractère qui ne soit pas dans la configuration. Voici un exemple de ce que je veux dire :
SELECT RTRIM('Cat...B...', '.')
FROM DUAL;
Résultat :
RTRIM('CAT...B...','.') __________________________ Cat...B
Cependant, si nous incluons B
dans l'ensemble, alors on obtient un résultat différent :
SELECT RTRIM('Cat...B...', '.B')
FROM DUAL;
Résultat :
RTRIM('CAT...B...','.B') ___________________________ Cat
Exemple de base de données
Voici un exemple de découpage de la partie droite des valeurs dans une colonne de base de données :
SELECT
country_name,
RTRIM(country_name, 'an') AS Trimmed
FROM countries
FETCH FIRST 5 ROWS ONLY;
Résultat :
COUNTRY_NAME TRIMMED _______________ ___________ Argentina Argenti Australia Australi Belgium Belgium Brazil Brazil Canada Canad
Valeurs nulles
Si un argument est null
le résultat est null
:
SET NULL 'null';
SELECT
RTRIM(null, 3),
RTRIM('Cat ', null),
RTRIM(null, null)
FROM DUAL;
Résultat :
RTRIM(NULL,3) RTRIM('CAT',NULL) RTRIM(NULL,NULL) ________________ ____________________ ___________________ null null null
Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois que null
se produit à la suite d'un SQL SELECT
déclaration.
Cependant, vous pouvez utiliser SET NULL
pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null
doit être retourné.
Rogner les chaînes vides
Passer une chaîne vide comme deuxième argument donne null
:
SET NULL 'null';
SELECT RTRIM('Cat ', '')
FROM DUAL;
Résultat :
RTRIM('CAT','') __________________ null
Mais ajouter un seul espace à la chaîne vide change cela et supprime tous les espaces vides à droite de la chaîne :
SELECT RTRIM('Cat ', ' ')
FROM DUAL;
Résultat :
RTRIM('CAT','') __________________ Cat
Nombre d'arguments incorrects
Appel de RTRIM()
sans passer aucun argument renvoie une erreur :
SELECT RTRIM()
FROM DUAL;
Résultat :
Error starting at line : 1 in command - SELECT RTRIM() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
Et passer le mauvais nombre d'arguments entraîne une erreur :
SELECT RTRIM('Cat', 1, '>')
FROM DUAL;
Résultat :
Error starting at line : 1 in command - SELECT RTRIM('Cat', 1, '>') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: