MariaDB RTRIM() vs RTRIM_ORACLE(): 有什么区别?
发布于
MariaDB有一个函数和一个函数。这两个函数基本上做同样的事情。但有一个细微的区别。RTRIM()RTRIM_ORACLE()
区别
区别在于每个函数如何处理空字符串:
RTRIM()从字符串中删除尾随空格。传递空字符串时,结果将取决于您是否处于 Oracle 模式。如果在 Oracle 模式下,它将返回 .否则,它将返回一个空字符串。nullRTRIM_ORACLE()是 的 Oracle 模式版本的同义词。它的行为类似于在 Oracle 模式下(它在传递空字符串时返回),即使不在 Oracle 模式下也是如此。RTRIM()``RTRIM()``null
因此,其工作原理与在 Oracle 模式下完全相同。但是,当不在 Oracle 模式下时,唯一的区别是每个函数如何处理空字符串。RTRIM_ORACLE()``RTRIM()
示例
最好用一个例子来解释这一点。
默认模式
以下是默认模式下这些函数的比较:
SET SQL_MODE=DEFAULT;
SELECT
RTRIM(''),
RTRIM_ORACLE('');
输出:
+-----------+------------------+
| RTRIM('') | RTRIM_ORACLE('') |
+-----------+------------------+
| | NULL |
+-----------+------------------+首先,我将系统设置为默认模式(即使它可能已经处于默认模式),然后我使用空字符串运行这两个函数。
我们可以看到返回一个空字符串,而返回 .RTRIM()``RTRIM_ORACLE()``null
甲骨文模式
现在让我们将其设置为 Oracle 模式并再次运行代码:
SET SQL_MODE=ORACLE;
SELECT
RTRIM(''),
RTRIM_ORACLE('');
输出:
+-----------+------------------+
| RTRIM('') | RTRIM_ORACLE('') |
+-----------+------------------+
| NULL | NULL |
+-----------+------------------+我们可以看到现在的行为类似于 .RTRIM()``RTRIM_ORACLE()
因此,对于 ,我们需要显式切换到 Oracle 模式,然后才能让它的行为类似于 Oracle 版本的 。RTRIM()``RTRIM()
RTRIM_ORACLE()另一方面,在所有模式下都可用,因此它使我们不必切换到 Oracle 模式。