MariaDB ma LTRIM() funkcja i LTRIM_ORACLE() funkcjonować. Obie funkcje robią zasadniczo to samo. Ale jest niewielka różnica.
Różnica
Różnica polega na tym, jak każda funkcja radzi sobie z pustymi ciągami:
LTRIM()usuwa wiodące spacje z ciągu. Po przekazaniu pustego ciągu wynik będzie zależał od tego, czy jesteś w trybie Oracle, czy nie. W trybie Oracle zwracanull. W przeciwnym razie zwraca pusty ciąg.LTRIM_ORACLE()jest synonimem wersjiLTRIM()w trybie Oracle . Zachowuje się jakLTRIM()w trybie Oracle (zwracanullpo przekazaniu pustego ciągu), nawet jeśli nie jest w trybie Oracle.
Więc LTRIM_ORACLE() działa dokładnie tak jak LTRIM() w trybie Oracle. Ale kiedy nie jest w trybie Oracle, jedyną różnicą jest to, jak każda funkcja radzi sobie z pustymi ciągami.
Przykład
Najlepiej to wyjaśnić na przykładzie.
Tryb domyślny
Oto porównanie tych funkcji w trybie domyślnym:
SET SQL_MODE=DEFAULT;
SELECT
LTRIM(''),
LTRIM_ORACLE(''); Wynik:
+-----------+------------------+
| LTRIM('') | LTRIM_ORACLE('') |
+-----------+------------------+
| | NULL |
+-----------+------------------+ Najpierw ustawiłem swój system w tryb domyślny (choć prawdopodobnie był już w trybie domyślnym), a następnie uruchomiłem obie funkcje z pustym ciągiem.
Widzimy, że LTRIM() zwraca pusty ciąg, podczas gdy LTRIM_ORACLE() zwraca null .
Tryb Oracle
Teraz ustawmy go w trybie Oracle i ponownie uruchom kod:
SET SQL_MODE=ORACLE;
SELECT
LTRIM(''),
LTRIM_ORACLE(''); Wynik:
+-----------+------------------+
| LTRIM('') | LTRIM_ORACLE('') |
+-----------+------------------+
| NULL | NULL |
+-----------+------------------+
Widzimy, że LTRIM() teraz zachowuje się jak LTRIM_ORACLE() .
Tak więc za pomocą LTRIM() , musimy jawnie przełączyć się na tryb Oracle, zanim sprawimy, by zachowywał się jak wersja Oracle LTRIM() .
LTRIM_ORACLE() z drugiej strony jest dostępny we wszystkich trybach, dzięki czemu nie musimy przełączać się na tryb Oracle.