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

MariaDB RTRIM() vs RTRIM_ORACLE():¿Cuál es la diferencia?

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, devuelve null . De lo contrario, devuelve una cadena vacía.
  • RTRIM_ORACLE() es un sinónimo de la versión en modo Oracle de RTRIM() . Se comporta como RTRIM() en modo Oracle (devuelve null 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.