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

Comment TRIM() fonctionne dans MariaDB

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) 

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 Argumentation

Par défaut, TRIM() coupe les deux côtés de la ficelle. Cependant, vous pouvez spécifier explicitement BOTH 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 Argumentation

Spé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 Argumentation

Spé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 et TRAILING 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 est null :

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