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

Diferencia entre TRIM() y TRIM_ORACLE() en MariaDB

MariaDB tiene un TRIM() función y un TRIM_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:

  • TRIM() elimina caracteres desde el principio o el final 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.
  • TRIM_ORACLE() es un sinónimo de la versión en modo Oracle de TRIM() . Se comporta como TRIM() en modo Oracle (devuelve null cuando se pasa una cadena vacía), incluso cuando no está en modo Oracle.

Entonces TRIM_ORACLE() funciona exactamente como TRIM() 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
    TRIM(''),
    TRIM_ORACLE('');

Resultado:

+----------+-----------------+
| TRIM('') | TRIM_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 TRIM() devuelve una cadena vacía, mientras que TRIM_ORACLE() devuelve null .

Modo oráculo

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

SET SQL_MODE=ORACLE;
SELECT
    TRIM(''),
    TRIM_ORACLE('');

Resultado:

+----------+-----------------+
| TRIM('') | TRIM_ORACLE('') |
+----------+-----------------+
| NULL     | NULL            |
+----------+-----------------+

Podemos ver que TRIM() ahora se comporta como TRIM_ORACLE() .

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

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