MariaDB má RTRIM()
funkce a RTRIM_ORACLE()
funkce. Obě funkce dělají v podstatě totéž. Ale je tu menší rozdíl.
Rozdíl
Rozdíl je v tom, jak každá funkce pracuje s prázdnými řetězci:
RTRIM()
odstraní koncové mezery z řetězce. Po předání prázdného řetězce bude výsledek záviset na tom, zda jste v režimu Oracle nebo ne. Pokud je v režimu Oracle, vrátínull
. Jinak vrátí prázdný řetězec.RTRIM_ORACLE()
je synonymem pro verziRTRIM()
v režimu Oracle . Chová se jakoRTRIM()
v režimu Oracle (vracínull
při předání prázdného řetězce), i když není v režimu Oracle.
Takže RTRIM_ORACLE()
funguje přesně jako RTRIM()
v režimu Oracle. Ale když není v režimu Oracle, jediný rozdíl je v tom, jak každá funkce pracuje s prázdnými řetězci.
Příklad
Nejlépe to vysvětlí příklad.
Výchozí režim
Zde je srovnání těchto funkcí ve výchozím režimu:
SET SQL_MODE=DEFAULT;
SELECT
RTRIM(''),
RTRIM_ORACLE('');
Výsledek:
+-----------+------------------+ | RTRIM('') | RTRIM_ORACLE('') | +-----------+------------------+ | | NULL | +-----------+------------------+
Nejprve jsem nastavil svůj systém do výchozího režimu (i když pravděpodobně již byl ve výchozím režimu), poté jsem obě funkce spustil s prázdným řetězcem.
Vidíme, že RTRIM()
vrátí prázdný řetězec, zatímco RTRIM_ORACLE()
vrátí null
.
Režim Oracle
Nyní jej nastavte do režimu Oracle a spusťte kód znovu:
SET SQL_MODE=ORACLE;
SELECT
RTRIM(''),
RTRIM_ORACLE('');
Výsledek:
+-----------+------------------+ | RTRIM('') | RTRIM_ORACLE('') | +-----------+------------------+ | NULL | NULL | +-----------+------------------+
Vidíme, že RTRIM()
se nyní chová jako RTRIM_ORACLE()
.
Takže pomocí RTRIM()
, musíme se explicitně přepnout do režimu Oracle, než se začne chovat jako verze Oracle RTRIM()
.
RTRIM_ORACLE()
na druhou stranu je k dispozici ve všech režimech, takže nás ušetří nutnosti přepínat do režimu Oracle.