MariaDB má LTRIM() funkce a LTRIM_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:
LTRIM()odstraní úvodní 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.LTRIM_ORACLE()je synonymem pro verziLTRIM()v režimu Oracle . Chová se jakoLTRIM()v režimu Oracle (vracínullpři předání prázdného řetězce), i když není v režimu Oracle.
Takže LTRIM_ORACLE() funguje přesně jako LTRIM() 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
LTRIM(''),
LTRIM_ORACLE(''); Výsledek:
+-----------+------------------+
| LTRIM('') | LTRIM_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 LTRIM() vrátí prázdný řetězec, zatímco LTRIM_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
LTRIM(''),
LTRIM_ORACLE(''); Výsledek:
+-----------+------------------+
| LTRIM('') | LTRIM_ORACLE('') |
+-----------+------------------+
| NULL | NULL |
+-----------+------------------+
Vidíme, že LTRIM() se nyní chová jako LTRIM_ORACLE() .
Takže pomocí LTRIM() , musíme se explicitně přepnout do režimu Oracle, než se začne chovat jako verze Oracle LTRIM() .
LTRIM_ORACLE() na druhou stranu je k dispozici ve všech režimech, takže nás ušetří přepínání do režimu Oracle.