首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle translate函数中的插入符号(^)是什么意思?

问Oracle translate函数中的插入符号(^)是什么意思?
EN

Stack Overflow用户
提问于 2013-05-17 16:50:26
回答 1查看 1.2K关注 0票数 0

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

代码语言:javascript
复制
SELECT TRANSLATE('ABC123DEF456', '^0123456789', '^') FROM DUAL;

然后我用下面的代码进行测试,结果是一样的:

代码语言:javascript
复制
SELECT TRANSLATE('ABC123DEF456', '^0123456789', ' ') FROM DUAL;
SELECT TRANSLATE('ABC123DEF456', '0123456789', ' ') FROM DUAL;

但是这个函数返回null:

代码语言:javascript
复制
SELECT TRANSLATE('ABC123DEF456', '0123456789', '') FROM DUAL;

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-17 17:08:46

TRANSLATE(expr, from_string, to_string)

不能使用to_string的空字符串从返回值中删除from_string中的所有字符。Oracle数据库将空字符串解释为null,如果此函数具有null参数,则返回null。

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

我怀疑在这里使用^是因为它永远不会出现在expr中,因此您永远不会在返回ABC^DEF的TRANSLATE('ABC12^3DE0F456', '^0123456789', '^')中的结果字符串中看到它。

您的原始函数SELECT TRANSLATE('ABC123DEF456', '^0123456789', '^') FROM DUAL;有效地从源字符串中剥离所有数字,因为对于from_string中的每个匹配数字,在to_string中没有对应的字符,其他字符被忽略。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16605037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档