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, devuelvenull
. De lo contrario, devuelve una cadena vacía.LTRIM_ORACLE()
es un sinónimo de la versión en modo Oracle deLTRIM()
. Se comporta comoLTRIM()
en modo Oracle (devuelvenull
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.