MariaDB има RTRIM()
функция и RTRIM_ORACLE()
функция. И двете функции правят по същество едно и също нещо. Но има малка разлика.
Разликата
Разликата е в това как всяка функция се справя с празните низове:
RTRIM()
премахва крайните интервали от низ. Когато се подаде празен низ, резултатът ще зависи от това дали сте в режим на Oracle или не. Ако е в режим на Oracle, той връщаnull
. В противен случай връща празен низ.RTRIM_ORACLE()
е синоним на версията наRTRIM()
в режим Oracle . Той се държи катоRTRIM()
в режим на Oracle (връщаnull
когато се предава празен низ), дори когато не е в режим на Oracle.
Така че RTRIM_ORACLE()
работи точно като RTRIM()
когато е в режим на Oracle. Но когато не е в режим на Oracle, единствената разлика е как всяка функция се справя с празните низове.
Пример
Това е най-добре обяснено с пример.
Режим по подразбиране
Ето сравнение на тези функции в режим по подразбиране:
SET SQL_MODE=DEFAULT;
SELECT
RTRIM(''),
RTRIM_ORACLE('');
Резултат:
+-----------+------------------+ | RTRIM('') | RTRIM_ORACLE('') | +-----------+------------------+ | | NULL | +-----------+------------------+
Първо, настроих системата си в режим по подразбиране (въпреки че вероятно вече беше в режим по подразбиране), след това стартирах и двете функции с празен низ.
Можем да видим, че RTRIM()
връща празен низ, докато RTRIM_ORACLE()
връща null
.
Режим Oracle
Сега нека го настроим в режим Oracle и стартираме кода отново:
SET SQL_MODE=ORACLE;
SELECT
RTRIM(''),
RTRIM_ORACLE('');
Резултат:
+-----------+------------------+ | RTRIM('') | RTRIM_ORACLE('') | +-----------+------------------+ | NULL | NULL | +-----------+------------------+
Можем да видим, че RTRIM()
сега се държи като RTRIM_ORACLE()
.
И така, с RTRIM()
, трябва изрично да преминем към режим на Oracle, преди да го накараме да се държи като версията на Oracle на RTRIM()
.
RTRIM_ORACLE()
от друга страна, е наличен във всички режими, така че ни спестява да преминем към режим на Oracle.