MariaDB hat ein TRIM()
Funktion und ein TRIM_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:
TRIM()
entfernt Zeichen am Anfang oder Ende 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.TRIM_ORACLE()
ist ein Synonym für die Oracle-Modus-Version vonTRIM()
. Es verhält sich wieTRIM()
im Oracle-Modus (es gibtnull
zurück wenn ein leerer String übergeben wird), auch wenn nicht im Oracle-Modus.
Also TRIM_ORACLE()
funktioniert genauso wie TRIM()
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
TRIM(''),
TRIM_ORACLE('');
Ergebnis:
+----------+-----------------+ | TRIM('') | TRIM_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 TRIM()
sehen gibt einen leeren String zurück, während TRIM_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
TRIM(''),
TRIM_ORACLE('');
Ergebnis:
+----------+-----------------+ | TRIM('') | TRIM_ORACLE('') | +----------+-----------------+ | NULL | NULL | +----------+-----------------+
Wir können das TRIM()
sehen verhält sich jetzt wie TRIM_ORACLE()
.
Also mit TRIM()
, müssen wir explizit in den Oracle-Modus wechseln, damit er sich wie die Oracle-Version von TRIM()
verhält .
TRIM_ORACLE()
andererseits ist in allen Modi verfügbar, sodass wir nicht in den Oracle-Modus wechseln müssen.