MariaDB
 sql >> Database >  >> RDS >> MariaDB

Differenza tra TRIM() e TRIM_ORACLE() in MariaDB

MariaDB ha un TRIM() funzione e un TRIM_ORACLE() funzione. Entrambe le funzioni fanno essenzialmente la stessa cosa. Ma c'è una piccola differenza.

La differenza

La differenza sta nel modo in cui ciascuna funzione gestisce le stringhe vuote:

  • TRIM() rimuove i caratteri dall'inizio o dalla fine di una stringa. Quando viene passata una stringa vuota, il risultato dipenderà dal fatto che tu sia in modalità Oracle o meno. Se in modalità Oracle, restituisce null . Altrimenti restituisce una stringa vuota.
  • TRIM_ORACLE() è un sinonimo della versione in modalità Oracle di TRIM() . Si comporta come TRIM() in modalità Oracle (restituisce null quando viene passata una stringa vuota), anche quando non è in modalità Oracle.

Quindi TRIM_ORACLE() funziona esattamente come TRIM() quando in modalità Oracle. Ma quando non è in modalità Oracle, l'unica differenza è il modo in cui ciascuna funzione gestisce le stringhe vuote.

Esempio

Questo è meglio spiegato con un esempio.

Modalità predefinita

Ecco un confronto di queste funzioni in modalità predefinita:

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

Risultato:

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

Innanzitutto, ho impostato il mio sistema sulla modalità predefinita (anche se probabilmente era già in modalità predefinita), quindi ho eseguito entrambe le funzioni con una stringa vuota.

Possiamo vedere che TRIM() restituisce una stringa vuota, mentre TRIM_ORACLE() restituisce null .

Modalità Oracle

Ora impostiamolo in modalità Oracle ed eseguiamo nuovamente il codice:

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

Risultato:

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

Possiamo vedere che TRIM() ora si comporta come TRIM_ORACLE() .

Quindi, con TRIM() , dobbiamo passare esplicitamente alla modalità Oracle prima che si comporti come la versione Oracle di TRIM() .

TRIM_ORACLE() d'altra parte, è disponibile in tutte le modalità, quindi ci evita di dover passare alla modalità Oracle.