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

MariaDB LTRIM() vs LTRIM_ORACLE() :Quelle est la différence ?

MariaDB a un LTRIM() fonction et un LTRIM_ORACLE() une fonction. Les deux fonctions font essentiellement la même chose. Mais il y a une petite différence.

La différence

La différence réside dans la façon dont chaque fonction traite les chaînes vides :

  • LTRIM() supprime les espaces de début d'une chaîne. Lorsque vous passez une chaîne vide, le résultat dépendra si vous êtes en mode Oracle ou non. Si en mode Oracle, il renvoie null . Sinon, il renvoie une chaîne vide.
  • LTRIM_ORACLE() est un synonyme de la version en mode Oracle de LTRIM() . Il se comporte comme LTRIM() en mode Oracle (il renvoie null lorsqu'une chaîne vide est transmise), même lorsqu'il n'est pas en mode Oracle.

Donc LTRIM_ORACLE() fonctionne exactement comme LTRIM() en mode Oracle. Mais lorsqu'il n'est pas en mode Oracle, la seule différence est la façon dont chaque fonction traite les chaînes vides.

Exemple

Ceci est mieux expliqué avec un exemple.

Mode par défaut

Voici une comparaison de ces fonctions en mode par défaut :

SET SQL_MODE=DEFAULT;
SELECT
    LTRIM(''),
    LTRIM_ORACLE('');

Résultat :

+-----------+------------------+
| LTRIM('') | LTRIM_ORACLE('') |
+-----------+------------------+
|           | NULL             |
+-----------+------------------+

Tout d'abord, j'ai mis mon système en mode par défaut (même s'il était probablement déjà en mode par défaut), puis j'ai exécuté les deux fonctions avec une chaîne vide.

Nous pouvons voir que LTRIM() renvoie une chaîne vide, tandis que LTRIM_ORACLE() renvoie null .

Mode Oracle

Passons maintenant au mode Oracle et réexécutons le code :

SET SQL_MODE=ORACLE;
SELECT
    LTRIM(''),
    LTRIM_ORACLE('');

Résultat :

+-----------+------------------+
| LTRIM('') | LTRIM_ORACLE('') |
+-----------+------------------+
| NULL      | NULL             |
+-----------+------------------+

Nous pouvons voir que LTRIM() se comporte maintenant comme LTRIM_ORACLE() .

Donc, avec LTRIM() , nous devons passer explicitement en mode Oracle avant de le faire se comporter comme la version Oracle de LTRIM() .

LTRIM_ORACLE() d'autre part, est disponible dans tous les modes, ce qui nous évite d'avoir à passer en mode Oracle.