MariaDB tiene un RTRIM()
función y un RTRIM_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:
RTRIM()
elimina los espacios finales 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.RTRIM_ORACLE()
es un sinónimo de la versión en modo Oracle deRTRIM()
. Se comporta comoRTRIM()
en modo Oracle (devuelvenull
cuando se pasa una cadena vacía), incluso cuando no está en modo Oracle.
Entonces RTRIM_ORACLE()
funciona exactamente como RTRIM()
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
RTRIM(''),
RTRIM_ORACLE('');
Resultado:
+-----------+------------------+ | RTRIM('') | RTRIM_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 RTRIM()
devuelve una cadena vacía, mientras que RTRIM_ORACLE()
devuelve null
.
Modo oráculo
Ahora configurémoslo en modo Oracle y ejecutemos el código nuevamente:
SET SQL_MODE=ORACLE;
SELECT
RTRIM(''),
RTRIM_ORACLE('');
Resultado:
+-----------+------------------+ | RTRIM('') | RTRIM_ORACLE('') | +-----------+------------------+ | NULL | NULL | +-----------+------------------+
Podemos ver que RTRIM()
ahora se comporta como RTRIM_ORACLE()
.
Entonces, con RTRIM()
, necesitamos cambiar explícitamente al modo Oracle antes de que se comporte como la versión Oracle de RTRIM()
.
RTRIM_ORACLE()
por otro lado, está disponible en todos los modos, por lo que nos ahorra tener que cambiar al modo Oracle.