Oracle字符串提取数字

场景:用户需要从memo字段中获取,实时扣款:后的扣款金额,并把同一案件的求和

1.先判断字段中是否含有实时扣款 instr(memo,‘实时扣款’)>0
2.截取实时扣款以及后面一小串 case when instr(memo,‘实时扣款’)>0 then substr(memo,instr(memo,‘实时扣款’),15) when instr(memo,‘划扣’)>0 then substr(memo,instr(memo,‘划扣’),15) else ‘0’ end as memo
3.正则校验获取数字 尝试了 regexp_substr(memo,’-|+?\d+(.\d+)?’)
regexp_replace(memo,’[^0-9|!.]’,’’)
4.自定义函数,防止报错isNumber
create or replace function isNumber(p in varchar2)
return number
is
test number;
begin
test := to_number§;
return test;
exception
when VALUE_ERROR then return 0;
end;
4.正则直接获取
select regexp_substr(
regexp_substr(‘20190724实时回款-信用卡行使抵消权 :0.01,尚欠57152.22’,’(行使抵消权|实时扣款) ?:\d+(.\d+)?’),’\d+(.\d+)?’) from dual
一、wm_concat()函数是oracle中独有的,mysql中有一个group_concat()函数。
这两个函数的作用是相同的,它们的功能是:实现行转列功能,即将查询出的某一列值使用逗号进行隔开拼接,成为一条数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值