如果我想将一些字符更改为空,那会翻译的功能会怎么做?

hua*_*hui 4 oracle translate

我有一个sql语句:

select translate('abcdefg', 'abc', '') from dual;
Run Code Online (Sandbox Code Playgroud)

为什么结果什么都没有?我认为它应该是'defg'.

Ale*_*ole 7

从文档:

您不能使用空字符串to_string从返回值中删除from_string中的所有字符.Oracle数据库将空字符串解释为null,如果此函数具有null参数,则返回null.要删除from_string中的所有字符,请将另一个字符连接到from_string的开头,并将此字符指定为to_string.例如,TRANSLATE(expr, 'x0123456789', 'x')expr中删除所有数字.

所以你可以这样做:

select translate('abcdefg', '#abc', '#') from dual;

TRANSLATE('ABCDEFG','#ABC','#')
-------------------------------
defg           
Run Code Online (Sandbox Code Playgroud)

...使用任何不会出现在你身上的角色from_string.