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.