Oracle分割

本文分享了两种在Oracle数据库中高效分割批量包含逗号的订单号的方法。方法一使用REGEXP_SUBSTR与LEVEL结合,逐级提取订单号。方法二则通过SUBSTR与INSTR函数,配合ROWNUM循环,统计特定日期区间内每天处理的独立订单数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle 分割

方法1

select T.DHPAY_ID,
T.ORDERNO,
trim(REGEXP_SUBSTR(ORDERNO, ‘[^,]+’, 1, level)) ORDERNO
from (select d.DHPAY_ID, d.ORDERNO
from FUND_PAYMENT_DHPAY d
where d.response_code = ‘01’
and d.insertdate >= to_date(‘2019-06-01’, ‘yyyy-mm-dd’)) T
connect by INSTR(ORDERNO, ‘,’, 1, level - 1) > 0;

方法2

select to_char(t.insert_date, ‘yyyy-mm-dd’) as dateno,
count(distinct substr(t.order_no,
instr(’,’ || t.order_no, ‘,’, 1, rn),
instr(t.order_no || ‘,’, ‘,’, 1, rn) -
instr(’,’ || t.order_no, ‘,’, 1, rn))) payfororder
from (select p.ORDERNO order_no, p.insertdate insert_date, b.rn
from FUND_PAYMENT_DHPAY p,
(select rownum rn from dual connect by rownum <= 100) b
where instr(’,’ || p.orderno, ‘,’, 1, rn) > 0
and p.insertdate >= to_date(‘2020-06-01’, ‘yyyy-mm-dd’)
and p.insertdate < to_date(‘2020-06-11’, ‘yyyy-mm-dd’)) t
group by to_char(t.insert_date, ‘yyyy-mm-dd’)
order by to_char(t.insert_date, ‘yyyy-mm-dd’);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值