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

MariaDB RTRIM() vs. RTRIM_ORACLE():Was ist der Unterschied?

MariaDB hat ein RTRIM() Funktion und ein RTRIM_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:

  • RTRIM() entfernt nachgestellte 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.
  • RTRIM_ORACLE() ist ein Synonym für die Oracle-Modus-Version von RTRIM() . Es verhält sich wie RTRIM() im Oracle-Modus (es gibt null zurück wenn ein leerer String übergeben wird), auch wenn nicht im Oracle-Modus.

Also RTRIM_ORACLE() funktioniert genauso wie RTRIM() 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
    RTRIM(''),
    RTRIM_ORACLE('');

Ergebnis:

+-----------+------------------+
| RTRIM('') | RTRIM_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 RTRIM() sehen gibt einen leeren String zurück, während RTRIM_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
    RTRIM(''),
    RTRIM_ORACLE('');

Ergebnis:

+-----------+------------------+
| RTRIM('') | RTRIM_ORACLE('') |
+-----------+------------------+
| NULL      | NULL             |
+-----------+------------------+

Wir können das RTRIM() sehen verhält sich jetzt wie RTRIM_ORACLE() .

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

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