MariaDB heeft een RTRIM()
functie en een RTRIM_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:
RTRIM()
verwijdert volgspaties uit 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.RTRIM_ORACLE()
is een synoniem voor de Oracle-modusversie vanRTRIM()
. Het gedraagt zich alsRTRIM()
in Oracle-modus (het retourneertnull
wanneer een lege string wordt doorgegeven), zelfs wanneer niet in Oracle-modus.
Dus RTRIM_ORACLE()
werkt precies als RTRIM()
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
RTRIM(''),
RTRIM_ORACLE('');
Resultaat:
+-----------+------------------+ | RTRIM('') | RTRIM_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 RTRIM()
geeft een lege string terug, terwijl RTRIM_ORACLE()
retourneert null
.
Oracle-modus
Laten we het nu in de Oracle-modus zetten en de code opnieuw uitvoeren:
SET SQL_MODE=ORACLE;
SELECT
RTRIM(''),
RTRIM_ORACLE('');
Resultaat:
+-----------+------------------+ | RTRIM('') | RTRIM_ORACLE('') | +-----------+------------------+ | NULL | NULL | +-----------+------------------+
We kunnen zien dat RTRIM()
gedraagt zich nu als RTRIM_ORACLE()
.
Dus, met RTRIM()
, moeten we expliciet overschakelen naar de Oracle-modus voordat we ervoor zorgen dat het zich gedraagt als de Oracle-versie van RTRIM()
.
RTRIM_ORACLE()
aan de andere kant is het beschikbaar in alle modi, zodat we niet hoeven over te schakelen naar de Oracle-modus.