MariaDB heeft een TRIM()
functie en een TRIM_ORACLE()
functie. Beide functies doen in wezen hetzelfde. Maar er is een klein verschil.
Het verschil
Het verschil zit in hoe elke functie omgaat met lege strings:
TRIM()
verwijdert tekens aan het begin of einde van een tekenreeks. Wanneer u een lege tekenreeks doorgeeft, hangt het resultaat ervan af of u zich in de Oracle-modus bevindt of niet. Als in Oracle-modus, retourneert hetnull
. Anders retourneert het een lege string.TRIM_ORACLE()
is een synoniem voor de Oracle-modusversie vanTRIM()
. Het gedraagt zich alsTRIM()
in Oracle-modus (het retourneertnull
wanneer een lege string wordt doorgegeven), zelfs wanneer niet in Oracle-modus.
Dus TRIM_ORACLE()
werkt precies zoals TRIM()
in Oracle-modus. Maar wanneer niet in Oracle-modus, is het enige verschil hoe elke functie omgaat met lege strings.
Voorbeeld
Dit kan het beste worden uitgelegd aan de hand van een voorbeeld.
Standaardmodus
Hier is een vergelijking van deze functies in de standaardmodus:
SET SQL_MODE=DEFAULT;
SELECT
TRIM(''),
TRIM_ORACLE('');
Resultaat:
+----------+-----------------+ | TRIM('') | TRIM_ORACLE('') | +----------+-----------------+ | | NULL | +----------+-----------------+
Eerst zette ik mijn systeem in de standaardmodus (ook al was het waarschijnlijk al in de standaardmodus), daarna voerde ik beide functies uit met een lege tekenreeks.
We kunnen zien dat TRIM()
geeft een lege string terug, terwijl TRIM_ORACLE()
retourneert null
.
Oracle-modus
Laten we het nu in de Oracle-modus zetten en de code opnieuw uitvoeren:
SET SQL_MODE=ORACLE;
SELECT
TRIM(''),
TRIM_ORACLE('');
Resultaat:
+----------+-----------------+ | TRIM('') | TRIM_ORACLE('') | +----------+-----------------+ | NULL | NULL | +----------+-----------------+
We kunnen zien dat TRIM()
gedraagt zich nu als TRIM_ORACLE()
.
Dus met TRIM()
, moeten we expliciet overschakelen naar de Oracle-modus voordat we ervoor zorgen dat het zich gedraagt als de Oracle-versie van TRIM()
.
TRIM_ORACLE()
aan de andere kant is het beschikbaar in alle modi, zodat we niet hoeven over te schakelen naar de Oracle-modus.