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 wirdnull
zurückgegeben . Andernfalls wird ein leerer String zurückgegeben.RTRIM_ORACLE()
ist ein Synonym für die Oracle-Modus-Version vonRTRIM()
. Es verhält sich wieRTRIM()
im Oracle-Modus (es gibtnull
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.