Oracle数据库 REGEXP_SUBSTR 函数

Oracle数据库 REGEXP_SUBSTR 函数

需求场景:

要求在指定时间段内根据部门名称字段(数据库中为多个,拼接字段) 进行分组计算sum(score)

如图
在这里插入图片描述

实现:先切割字段再分组计算,使用到REGEXP_SUBSTR


    /**
    *- 字段说明
	*分割字符串中所有的逗号,然后成多行
	*参数说明,
	*参数1(DEPT_NAMES): 待分割字符串
	*
	*参数2('[^,]+'):正则表达式(以‘,’标识号切割)
	*
	*参数3:起始位置,从第几个字符开始正则表达式匹配(默认为1)
	*
	*参数4(LEVEL):标识第几个匹配组,默认为1
	*
	*参数5:模式('i'不区分大小写进行检索;'c'区分大小写进行检索。
	默认为'c'。可不写,我这里没有使用第5个参数,可根据业务需求配置)
    **/
SELECT DEPT_NAMES ,sum(SCORE)  as SCORE FROM 

(select REGEXP_SUBSTR(DEPT_NAMES, '[^,]+', 1, LEVEL)DEPT_NAMES,SCORE

FROM PM_INSPECTION_TEMPLATE 

WHERE CREATED_TIME BETWEEN 1598505039972 AND  1599113557000

CONNECT BY LEVEL <= REGEXP_COUNT(DEPT_NAMES, ',') + 1

AND rowid= prior rowid

AND prior dbms_random.value is not null) q  GROUP BY DEPT_NAMES  

代码运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值