MariaDB ha un LTRIM()
funzione e un LTRIM_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:
LTRIM()
rimuove gli spazi iniziali da 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, restituiscenull
. Altrimenti restituisce una stringa vuota.LTRIM_ORACLE()
è un sinonimo della versione in modalità Oracle diLTRIM()
. Si comporta comeLTRIM()
in modalità Oracle (restituiscenull
quando viene passata una stringa vuota), anche quando non è in modalità Oracle.
Quindi LTRIM_ORACLE()
funziona esattamente come LTRIM()
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
LTRIM(''),
LTRIM_ORACLE('');
Risultato:
+-----------+------------------+ | LTRIM('') | LTRIM_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 LTRIM()
restituisce una stringa vuota, mentre LTRIM_ORACLE()
restituisce null
.
Modalità Oracle
Ora impostiamolo in modalità Oracle ed eseguiamo nuovamente il codice:
SET SQL_MODE=ORACLE;
SELECT
LTRIM(''),
LTRIM_ORACLE('');
Risultato:
+-----------+------------------+ | LTRIM('') | LTRIM_ORACLE('') | +-----------+------------------+ | NULL | NULL | +-----------+------------------+
Possiamo vedere che LTRIM()
ora si comporta come LTRIM_ORACLE()
.
Quindi, con LTRIM()
, dobbiamo passare esplicitamente alla modalità Oracle prima che si comporti come la versione Oracle di LTRIM()
.
LTRIM_ORACLE()
d'altra parte, è disponibile in tutte le modalità, quindi ci evita di dover passare alla modalità Oracle.