日期:2014-05-17  浏览次数:20849 次

oracle 中 LTRIM()函数的问题
语句如下:

SELECT   LTRIM( '1092002081100058424 ',   '109 ')   FROM   dual
UNION   ALL
SELECT   LTRIM( '1091000000002671251 ',   '109 ')   FROM   dual

运行结果如下:

1 2002081100058424
2 2671251

问题:为什么截断的效果不一样呢???理想中应该是如下才对啊。

1               2002081100058424
2               1000000002671251


------解决方案--------------------
--Ltrim 函数现实c1匹配前面开始去掉出现在c2的中任何前导字符集
------解决方案--------------------
试了下,
SELECT LTRIM( '1092002081100058424 ', '1092 ') FROM dual
UNION ALL
SELECT LTRIM( '1091000000002671251 ', '109 ') FROM dual
结果得到
1 81100058424
2 2671251
,可看,ltrim是把开头是1 0 9 的都截了,而不是整个字符串截的


------解决方案--------------------
函数将109当成了三个字符以1,0,9在字符串开始直道出现不为1,0,9这三个字符中的任意一个开始截取