MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

MariaDB RTRIM() vs RTRIM_ORACLE():Qual é a diferença?


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, retorna null . Caso contrário, ele retornará uma string vazia.
  • RTRIM_ORACLE() é um sinônimo para a versão do modo Oracle de RTRIM() . Ele se comporta como RTRIM() no modo Oracle (retorna null 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.