LTRIM在Oracle中给出了奇怪的答案

时间:2013-12-13 11:56:26

标签: oracle11g

我使用了以下查询

  select ltrim('|7732-18-5|1314-13-2|','7732-18-5|') from dual;

预期答案是1314-13-2 |但是给出了以下答案4-13-2 |。

这是Oracle的Bug吗?或者我是一个愚蠢的程序员?

1 个答案:

答案 0 :(得分:1)

来自http://docs.oracle.com/cd/B28359_01/olap.111/b28126/dml_functions_2018.htm#OLADM594

  

LTRIM函数从文本表达式的左侧删除字符,删除出现在另一个文本表达式中的所有最左边的字符。该函数开始从其第一个字符扫描基本文本表达式,并删除修剪表达式中出现的所有字符,直到到达不在修剪表达式中的字符,然后返回结果。

在这种情况下,数字“4”不在你的修剪表达'7732-18-5|'中,所以直到4的所有内容都被移除,只返回4-13-2 |

要获得预期输出,请考虑使用REPLACE函数:

select replace('|7732-18-5|1314-13-2|','7732-18-5|') from dual;