sql >> Base de Datos >  >> RDS >> MariaDB

MariaDB LTRIM() vs LTRIM_ORACLE():¿Cuál es la diferencia?

MariaDB tiene un LTRIM() función y un LTRIM_ORACLE() función. Ambas funciones hacen esencialmente lo mismo. Pero hay una pequeña diferencia.

La diferencia

La diferencia está en cómo cada función trata con cadenas vacías:

  • LTRIM() elimina los espacios iniciales de una cadena. Cuando se pasa una cadena vacía, el resultado dependerá de si está en modo Oracle o no. Si está en modo Oracle, devuelve null . De lo contrario, devuelve una cadena vacía.
  • LTRIM_ORACLE() es un sinónimo de la versión en modo Oracle de LTRIM() . Se comporta como LTRIM() en modo Oracle (devuelve null cuando se pasa una cadena vacía), incluso cuando no está en modo Oracle.

Entonces LTRIM_ORACLE() funciona exactamente como LTRIM() cuando está en modo Oracle. Pero cuando no está en modo Oracle, la única diferencia es cómo cada función trata con cadenas vacías.

Ejemplo

Esto se explica mejor con un ejemplo.

Modo predeterminado

Aquí hay una comparación de estas funciones en el modo predeterminado:

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

Resultado:

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

Primero, configuré mi sistema en modo predeterminado (aunque probablemente ya estaba en modo predeterminado), luego ejecuté ambas funciones con una cadena vacía.

Podemos ver que LTRIM() devuelve una cadena vacía, mientras que LTRIM_ORACLE() devuelve null .

Modo oráculo

Ahora configurémoslo en modo Oracle y ejecutemos el código nuevamente:

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

Resultado:

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

Podemos ver que LTRIM() ahora se comporta como LTRIM_ORACLE() .

Entonces, con LTRIM() , necesitamos cambiar explícitamente al modo Oracle antes de que se comporte como la versión Oracle de LTRIM() .

LTRIM_ORACLE() por otro lado, está disponible en todos los modos, por lo que nos ahorra tener que cambiar al modo Oracle.