MariaDB tem um
RTRIM()
função e um RTRIM_ORACLE()
função. Ambas as funções fazem essencialmente a mesma coisa. Mas há uma pequena diferença. A diferença
A diferença está em como cada função lida com strings vazias:
RTRIM()
remove espaços à direita de uma string. Ao passar uma string vazia, o resultado dependerá de você estar no modo Oracle ou não. Se estiver no modo Oracle, retornanull
. Caso contrário, ele retornará uma string vazia.RTRIM_ORACLE()
é um sinônimo para a versão do modo Oracle deRTRIM()
. Ele se comporta comoRTRIM()
no modo Oracle (retornanull
quando passou uma string vazia), mesmo quando não estiver no modo Oracle.
Então
RTRIM_ORACLE()
funciona exatamente como RTRIM()
quando no modo Oracle. Mas quando não está no modo Oracle, a única diferença é como cada função lida com strings vazias. Exemplo
Isso é melhor explicado com um exemplo.
Modo padrão
Aqui está uma comparação dessas funções no modo padrão:
SET SQL_MODE=DEFAULT;
SELECT
RTRIM(''),
RTRIM_ORACLE('');
Resultado:
+-----------+------------------+ | RTRIM('') | RTRIM_ORACLE('') | +-----------+------------------+ | | NULL | +-----------+------------------+
Primeiro, configurei meu sistema para o modo padrão (mesmo que provavelmente já estivesse no modo padrão), depois executei as duas funções com uma string vazia.
Podemos ver que
RTRIM()
retorna uma string vazia, enquanto RTRIM_ORACLE()
retorna null
. Modo Oráculo
Agora vamos configurá-lo para o modo Oracle e executar o código novamente:
SET SQL_MODE=ORACLE;
SELECT
RTRIM(''),
RTRIM_ORACLE('');
Resultado:
+-----------+------------------+ | RTRIM('') | RTRIM_ORACLE('') | +-----------+------------------+ | NULL | NULL | +-----------+------------------+
Podemos ver que
RTRIM()
agora se comporta como RTRIM_ORACLE()
. Então, com
RTRIM()
, precisamos mudar explicitamente para o modo Oracle antes que ele se comporte como a versão Oracle de RTRIM()
. RTRIM_ORACLE()
por outro lado, está disponível em todos os modos, o que nos poupa de ter que mudar para o modo Oracle.