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