问题描述
现在,有这样的数据
a b c
101:1.9|832:1.9|91:1.0|786:1.0|55:1.0|28:1.0 14:1.0|149:1.0 14:1.0|1:1.0
我怎样才能得到结果
a b c
101;832;91;786;55;28 14;149 14;1
解决方法
使用 regexp_replace 您可以用分号 ; 替换(:
之后直到 |
或字符串末尾的所有内容),然后删除结尾的分号。
演示:
with mytable as(
select stack( 1,'101:1.9|832:1.9|91:1.0|786:1.0|55:1.0|28:1.0','14:1.0|149:1.0','14:1.0|1:1.0' ) as (a,b,c)
)
select regexp_replace(regexp_replace(a,':[0-9.]*(\\||$)','\073'),'\073$','') as a,regexp_replace(regexp_replace(b,'') as b,regexp_replace(regexp_replace(c,'') as c
from mytable
结果:
a b c
101;832;91;786;55;28 14;149 14;1