MariaDB ma RTRIM()
funkcja i RTRIM_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:
RTRIM()
usuwa końcowe 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.RTRIM_ORACLE()
jest synonimem wersjiRTRIM()
w trybie Oracle . Zachowuje się jakRTRIM()
w trybie Oracle (zwracanull
po przekazaniu pustego ciągu), nawet jeśli nie jest w trybie Oracle.
Więc RTRIM_ORACLE()
działa dokładnie tak jak RTRIM()
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
RTRIM(''),
RTRIM_ORACLE('');
Wynik:
+-----------+------------------+ | RTRIM('') | RTRIM_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 RTRIM()
zwraca pusty ciąg, podczas gdy RTRIM_ORACLE()
zwraca null
.
Tryb Oracle
Teraz ustawmy go w trybie Oracle i ponownie uruchom kod:
SET SQL_MODE=ORACLE;
SELECT
RTRIM(''),
RTRIM_ORACLE('');
Wynik:
+-----------+------------------+ | RTRIM('') | RTRIM_ORACLE('') | +-----------+------------------+ | NULL | NULL | +-----------+------------------+
Widzimy, że RTRIM()
teraz zachowuje się jak RTRIM_ORACLE()
.
Tak więc za pomocą RTRIM()
, musimy jawnie przełączyć się na tryb Oracle, zanim sprawimy, by zachowywał się jak wersja Oracle RTRIM()
.
RTRIM_ORACLE()
z drugiej strony jest dostępny we wszystkich trybach, dzięki czemu nie musimy przełączać się na tryb Oracle.