我使用了以下查询
select ltrim('|7732-18-5|1314-13-2|','7732-18-5|') from dual;
预期答案是1314-13-2 |但是给出了以下答案4-13-2 |。
这是Oracle的Bug吗?或者我是一个愚蠢的程序员?
答案 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;