Dans MariaDB, TRIM()
est une fonction de chaîne intégrée qui supprime des caractères au début ou à la fin d'une chaîne.
Par défaut, il supprime les espaces de début et de fin, mais vous pouvez spécifier le caractère à supprimer, ainsi que le(s) côté(s) dont vous souhaitez le supprimer.
Syntaxe
Le TRIM()
fonction peut être utilisée comme suit :
TRIM([remstr FROM] str)
Ou :
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
Où str
est la chaîne dont il faut supprimer tous les espaces de fin, et remstr
est la chaîne à supprimer.
Si remstr
n'est pas fourni, alors TRIM()
supprime les espaces.
Exemple
Voici un exemple de base :
SELECT
' Caribbean Island ' AS "Untrimmed",
TRIM(' Caribbean Island ') AS "Trimmed";
Résultat :
+-----------------------+------------------+| Non rogné | Coupé |+-----------------------+------------------+| Île des Caraïbes | Île des Caraïbes |+-----------------------+------------------+Cet exemple utilise la syntaxe la plus basique. Tout ce que nous avons fait, c'est fournir la ficelle à couper. Nous n'avons pas spécifié quel(s) caractère(s) couper, et donc tous les espaces ont été coupés des deux côtés de la chaîne.
Nous pouvons également voir que l'espace dans la chaîne reste intact.
Les
BOTH
ArgumentationPar défaut,
TRIM()
coupe les deux côtés de la ficelle. Cependant, vous pouvez spécifier explicitementBOTH
si vous le souhaitez :SELECT ' Caribbean Island ' AS "Untrimmed", TRIM(BOTH FROM ' Caribbean Island ') AS "Trimmed";
Résultat :
+-----------------------+------------------+| Non rogné | Coupé |+-----------------------+------------------+| Île des Caraïbes | Île des Caraïbes |+-----------------------+------------------+Nous obtenons le même résultat que l'exemple précédent.
Le
LEADING
ArgumentationSpécifier
LEADING
limite l'opération de découpage au début de la chaîne :SELECT ' Caribbean Island ' AS "Untrimmed", TRIM(LEADING FROM ' Caribbean Island ') AS "Trimmed";
Résultat :
+-----------------------+--------------------- +| Non rogné | Coupé |+-----------------------+---------------------+ | Île des Caraïbes | Île des Caraïbes |+-----------------------+--------------------- +Nous pouvons voir que des espaces existent toujours sur le côté droit de la chaîne coupée. Seule la partie gauche a été coupée.
Le
TRAILING
ArgumentationSpécifier
TRAILING
limite l'opération de découpage au début de la chaîne :SELECT ' Caribbean Island ' AS "Untrimmed", TRIM(TRAILING FROM ' Caribbean Island ') AS "Trimmed";
Résultat :
+-----------------------+--------------------- +| Non rogné | Coupé |+-----------------------+---------------------+ | Île des Caraïbes | Île des Caraïbes |+-----------------------+--------------------- +Cette fois, seule la partie droite a été coupée. Des espaces existent toujours sur le côté gauche de la chaîne coupée.
Spécifiez une chaîne à couper
Voici un exemple de spécification du caractère à découper :
SELECT '...mountain...' AS "Untrimmed", TRIM('.' FROM '...mountain...') AS "Trimmed";
Résultat :
+----------------+----------+| Non rogné | Coupé |+----------------+----------+| ...montagne... | montagne |+----------------+----------+Il ne doit pas s'agir d'un seul personnage. Vous pouvez spécifier n'importe quelle chaîne à couper :
SELECT TRIM('.' FROM '.+.mountain.+.') AS "1", TRIM('.+' FROM '.+.mountain.+.') AS "2", TRIM('+.' FROM '.+.mountain.+.') AS "3", TRIM('.+.' FROM '.+.mountain.+.') AS "4";
Résultat :
+--------------+-------------+--------------+- ---------+| 1 | 2 | 3 | 4 |+-------------+-------------+--------------+-- --------+| +.montagne.+ | .montagne.+. | .+.montagne. | montagne |+--------------+-------------+--------------+-- --------+Vous pouvez même couper une partie du mot si vous le souhaitez :
SELECT TRIM('moun' FROM 'mountain');
Résultat :
+------------------------------+| TRIM('montagne' FROM 'montagne') |+------------------------------+| tain |+------------------------------+Nous pouvons également utiliser le
BOTH
,LEADING
etTRAILING
arguments lors de la spécification de la chaîne à couper.Exemple :
SELECT TRIM(BOTH '.' FROM '...mountain...') AS "Both", TRIM(LEADING '.' FROM '...mountain...') AS "Leading", TRIM(TRAILING '.' FROM '...mountain...') AS "Trailaing";
Résultat :
+----------+-------------+-------------+| Les deux | En tête | Suivant |+----------+-------------+-------------+| montagne | montagne... | ...montagne |+----------+-------------+----------------------+Arguments nuls
Si donné un
null
argument, le résultat estnull
:SELECT TRIM(null);
Résultat :
+------------+| TRIM(null) |+------------+| NULL |+------------+Mode Oracle
Quand pas s'exécutant en mode Oracle, si le résultat est vide (c'est-à-dire qu'il a une longueur de zéro), le résultat est une chaîne vide.
Cependant, lors de l'exécution en mode Oracle, le résultat est
null
.Ici, il est en mode par défaut (c'est-à-dire pas en mode oracle) :
SELECT TRIM('');
Résultat :
+----------+| TRIM('') |+----------+| |+----------+Passons maintenant en mode Oracle :
SET SQL_MODE=ORACLE;
Et relancez le code :
SELECT TRIM('');
Résultat :
+----------+| TRIM('') |+----------+| NULL |+----------+Il existe également une autre façon de le faire. Au lieu de passer en mode Oracle, vous pouvez utiliser
TRIM_ORACLE()
comme nom de fonction.Revenons au mode par défaut :
SET SQL_MODE=DEFAULT;
Et maintenant, exécutez
TRIM_ORACLE()
:SELECT TRIM_ORACLE('');
Résultat :
+-----------------+| TRIM_ORACLE('') |+-----------------+| NULL |+-----------------+Argument manquant
Appel de
TRIM()
sans argument génère une erreur :SELECT TRIM();
Résultat :
ERROR 1064 (42000) :vous avez une erreur dans votre syntaxe SQL ; consultez le manuel qui correspond à la version de votre serveur MariaDB pour la bonne syntaxe à utiliser près de ')' à la ligne 1