Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonction RTRIM() dans Oracle

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 ])

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: