产生以下输出的最佳SQL是什么?

时间:2019-05-22 17:14:03

标签: sql oracle

输入列具有逗号分隔的整数值,例如

样本输入1)

1,2,200000,2345323,1200000

样本输出1)

1,2,2345323

样本输入2)

546^515,400000,657180,3

样本输出2)

546^515, 657180,3

输出字符串应过滤出所有带有“ 5”尾随零的整数。

1 个答案:

答案 0 :(得分:0)

使用regexp_replace()可以很容易地排除五个零数字。但是似乎我们也需要整理掉后面的逗号。此解决方案还有一个regexp_replace(),可以在切出的数字位于字符串中时捕获,,,而当数字是字符串中的第一个或最后一个字符串时,可以使用简单的trim()

with cte as (
    select '1,2,200000,2345323,1200000' as str from dual union all
    select '546^515,400000,657180,3' as str from dual union all
    select '546^515,400000,1200000,657180,3' as str from dual union all
    select '54000000,400000,1200000,657180,300000000' as str from dual
    )
select trim(both ',' from regexp_replace(regexp_replace(str, '([0-9]+)00000', null),',(,+)',',')) as new_str 
from cte
/