Oracle中的插入符号(^)是什么意思?

时间:2013-05-17 08:50:26

标签: oracle plsql

我在其他开发人员的代码中遇到了这句话,该代码返回ABCDEF

SELECT TRANSLATE('ABC123DEF456', '^0123456789', '^') FROM DUAL;

然后我测试了以下结果相同的结果:

SELECT TRANSLATE('ABC123DEF456', '^0123456789', ' ') FROM DUAL;
SELECT TRANSLATE('ABC123DEF456', '0123456789', ' ') FROM DUAL;

但是这个返回null:

SELECT TRANSLATE('ABC123DEF456', '0123456789', '') FROM DUAL;

插入符号(^)是什么意思?为什么有必要?

1 个答案:

答案 0 :(得分:4)

TRANSLATE(expr, from_string, to_string)

  

您无法使用空字符串to_string删除所有字符   在from_string中返回值。 Oracle数据库解释了   空字符串为null,如果此函数具有null参数,则   它返回null。

因此,您无法将''指定为to_string参数的值,因为它将被解释为null。

我怀疑此处使用了^因为它永远不会出现在expr中,因此您永远不会在结果字符串中看到它,就像TRANSLATE('ABC12^3DE0F456', '^0123456789', '^')中返回ABC^DEF一样}。

您的原始函数SELECT TRANSLATE('ABC123DEF456', '^0123456789', '^') FROM DUAL;有效地删除了源字符串中的所有数字,因为from_string中的每个匹配数字都没有to_string中的相应字符,其他字符只会被忽略。