MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

MariaDB LTRIM() vs. LTRIM_ORACLE():Was ist der Unterschied?

MariaDB hat ein LTRIM() Funktion und ein LTRIM_ORACLE() Funktion. Beide Funktionen machen im Wesentlichen das Gleiche. Aber es gibt einen kleinen Unterschied.

Der Unterschied

Der Unterschied besteht darin, wie jede Funktion mit leeren Zeichenfolgen umgeht:

  • LTRIM() entfernt führende Leerzeichen aus einer Zeichenfolge. Wenn eine leere Zeichenfolge übergeben wird, hängt das Ergebnis davon ab, ob Sie sich im Oracle-Modus befinden oder nicht. Im Oracle-Modus wird null zurückgegeben . Andernfalls wird ein leerer String zurückgegeben.
  • LTRIM_ORACLE() ist ein Synonym für die Oracle-Modus-Version von LTRIM() . Es verhält sich wie LTRIM() im Oracle-Modus (es gibt null zurück wenn ein leerer String übergeben wird), auch wenn nicht im Oracle-Modus.

Also LTRIM_ORACLE() funktioniert genauso wie LTRIM() im Oracle-Modus. Aber wenn Sie sich nicht im Oracle-Modus befinden, besteht der einzige Unterschied darin, wie jede Funktion mit leeren Zeichenfolgen umgeht.

Beispiel

Dies lässt sich am besten an einem Beispiel erklären.

Standardmodus

Hier ist ein Vergleich dieser Funktionen im Standardmodus:

SET SQL_MODE=DEFAULT;
SELECT
    LTRIM(''),
    LTRIM_ORACLE('');

Ergebnis:

+-----------+------------------+
| LTRIM('') | LTRIM_ORACLE('') |
+-----------+------------------+
|           | NULL             |
+-----------+------------------+

Zuerst habe ich mein System in den Standardmodus versetzt (obwohl es wahrscheinlich bereits im Standardmodus war), dann habe ich beide Funktionen mit einem leeren String ausgeführt.

Wir können das LTRIM() sehen gibt einen leeren String zurück, während LTRIM_ORACLE() gibt null zurück .

Oracle-Modus

Lassen Sie uns nun den Oracle-Modus einstellen und den Code erneut ausführen:

SET SQL_MODE=ORACLE;
SELECT
    LTRIM(''),
    LTRIM_ORACLE('');

Ergebnis:

+-----------+------------------+
| LTRIM('') | LTRIM_ORACLE('') |
+-----------+------------------+
| NULL      | NULL             |
+-----------+------------------+

Wir können das LTRIM() sehen verhält sich jetzt wie LTRIM_ORACLE() .

Also mit LTRIM() , müssen wir explizit in den Oracle-Modus wechseln, damit er sich wie die Oracle-Version von LTRIM() verhält .

LTRIM_ORACLE() andererseits ist in allen Modi verfügbar, sodass wir nicht in den Oracle-Modus wechseln müssen.