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

Fonction TRIM() dans Oracle

Dans Oracle, le TRIM() La fonction vous permet de couper les caractères des côtés d'une chaîne.

Vous pouvez couper les caractères de début, les caractères de fin ou les deux.

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 :

TRIM([ { { LEADING | TRAILING | BOTH }
         [ trim_character ]
       | trim_character
       }
       FROM 
     ]
     trim_source
    )

Les deux trim_character et trim_source peut être VARCHAR2 ou tout type de données pouvant être implicitement converti en VARCHAR2 .

Exemple

Voici un exemple simple pour illustrer :

SELECT TRIM('.' FROM '...Cat...')
FROM DUAL;

Résultat :

   TRIM('.'FROM'...CAT...') 
___________________________ 
Cat                        

Dans ce cas, le caractère spécifié (. ) a été retiré des deux côtés de la chaîne.

Il a été supprimé des deux côtés car je n'ai pas précisé de quel côté le supprimer.

Nous pouvons obtenir le même résultat en incluant le BOTH mot-clé :

SELECT TRIM(BOTH '.' FROM '...Cat...')
FROM DUAL;

Résultat :

   TRIM(BOTH'.'FROM'...CAT...') 
_______________________________ 
Cat                            

Rogner les caractères de début

Le voici à nouveau, mais avec seulement les premiers caractères supprimés :

SELECT TRIM(LEADING '.' FROM '...Cat...')
FROM DUAL;

Résultat :

   TRIM(LEADING'.'FROM'...CAT...') 
__________________________________ 
Cat...                            

Supprimer les caractères de fin

Et le voici avec seulement les caractères de fin supprimés :

SELECT TRIM(TRAILING '.' FROM '...Cat...')
FROM DUAL;

Résultat :

   TRIM(TRAILING'.'FROM'...CAT...') 
___________________________________ 
...Cat                             

Caractère par défaut

Dans cet exemple, je ne spécifie pas de caractère à couper, donc il coupe l'espace vide :

SELECT TRIM(' Cat ')
FROM DUAL;

Résultat :

   TRIM('CAT') 
______________ 
Cat           

Il n'est pas si facile de voir l'effet lors de la découpe des espaces blancs des deux côtés.

Voici un autre exemple qui permet de voir plus facilement que l'espace blanc a été supprimé des deux côtés :

SELECT 
    'My' || ' Fat ' || 'Cat',
    'My' || TRIM(' Fat ') || 'Cat'
FROM DUAL;

Résultat :

   'MY'||'FAT'||'CAT'    'MY'||TRIM('FAT')||'CAT' 
_____________________ ___________________________ 
My Fat Cat            MyFatCat                   

Numéros

La chaîne et le caractère de rognage peuvent être VARCHAR2 ou tout type de données pouvant être implicitement converti en VARCHAR2 , nous pouvons donc transmettre un nombre comme celui-ci. Cependant, la valeur de retour est VARCHAR2 .

SELECT TRIM(LEADING 0 FROM 007)
FROM DUAL;

Résultat :

   TRIM(LEADING0FROM007) 
________________________ 
7                      

Le voici avec un numéro différent en cours de découpage :

SELECT TRIM(LEADING 1 FROM 117)
FROM DUAL;

Résultat :

   TRIM(LEADING1FROM117) 
________________________ 
7                        

Valeurs nulles

Si la chaîne ou le caractère trim est null le résultat est null :

SET NULL 'null';

SELECT 
    TRIM(null FROM '...Cat...'),
    TRIM(BOTH FROM null),
    TRIM(null FROM null)
FROM DUAL;

Résultat :

   TRIM(NULLFROM'...CAT...')    TRIM(BOTHFROMNULL)    TRIM(NULLFROMNULL) 
____________________________ _____________________ _____________________ 
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

Le passage d'une chaîne vide comme caractère de rognage donne null :

SET NULL 'null';

SELECT TRIM('' FROM '   Cat')
FROM DUAL;

Résultat :

   TRIM(''FROM'CAT') 
____________________ 
null                

Mais ajouter un seul espace à la chaîne vide change cela et supprime tous les espaces vides de la chaîne :

SET NULL 'null';

SELECT TRIM(' ' FROM '   Cat')
FROM DUAL;

Résultat :

   TRIM(''FROM'CAT') 
____________________ 
Cat                 

Nombre d'arguments incorrects

Appel de TRIM() sans passer d'argument renvoie une erreur :

SELECT TRIM()
FROM DUAL;

Résultat :

Error starting at line : 1 in command -
SELECT TRIM()
FROM DUAL
Error at Command Line : 1 Column : 13
Error report -
SQL Error: ORA-00936: missing expression
00936. 00000 -  "missing expression"
*Cause:    
*Action:

Et passer le mauvais nombre d'arguments entraîne une erreur :

SELECT TRIM(' Cat ', 2)
FROM DUAL;

Résultat :

Error starting at line : 1 in command -
SELECT TRIM(' Cat ', 2)
FROM DUAL
Error at Command Line : 1 Column : 20
Error report -
SQL Error: ORA-00907: missing right parenthesis
00907. 00000 -  "missing right parenthesis"
*Cause:    
*Action:

Voir aussi RTRIM() et LTRIM() pour des fonctions plus ciblées pour couper chaque côté d'une corde. Ces fonctions vous permettent également de supprimer plusieurs caractères de la chaîne.