'Student001,Student001,Student002,Student002,Student003'
'CHINESE,ENGLISH,CHINESE,MATH,ENGLISH'
'60,70,80,90,100'
Student001 CHINESE 60
Student001 ENGLISH 70
Student002 CHINESE 80
Student002 MATH 90
Student003 ENGLISH 100
REGEXP_SUBSTR函数格式如下:
function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
__srcstr :需要进行正则处理的字符串
__pattern :进行匹配的正则表达式
__position :起始位置,从第几个字符开始正则表达式匹配(默认为1)
__occurrence :标识第几个匹配组,默认为1
__modifier :模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)
select regexp_substr('60,70,80,90,100','[^,]+',1,1) result from dual; --60
select regexp_substr('60,70,80,90,100','[^,]+',1,2) result from dual; --70
select regexp_substr('60,70,80,90,100','[^,]+',1,3) result from dual; --80
select regexp_substr('60,70,80,90,100','[^,]+',4,1) result from dual; --70
select regexp_substr('60,70,80,90,100','[^,]+',4,2) result from dual; --80
select regexp_substr('60,70,80,90,100','[^,]+',4,3) result from dual; --90
Oracle中使用connect by 来实现树状查询,可以使用level这个伪列来实现分层查询
SELECT LEVEL FROM DUAL CONNECT BY LEVEL <=3;
--1
--2
--3
打印过去五天日期
select sysdate-level days from dual connect by level <= 5;
--07-FEB-21
--06-FEB-21
--05-FEB-21
--04-FEB-21
--03-FEB-21
SELECT regexp_substr(temp.STUDENT, '[^,]+', 1, level) STUDENT
FROM
(SELECT 'Student001,Student002,Student003' STUDENT
FROM dual
) temp
CONNECT BY level <= REGEXP_COUNT('Student001,Student002,Student003', '[^,]+');
--Student001
--Student002
--Student003
SELECT regexp_substr(temp.STUDENT, '[^,]+', 1, LEVEL) AS STUDENT,
regexp_substr(temp.SUBJECT, '[^,]+', 1, LEVEL) AS SUBJECT,
regexp_substr(temp.SCORT, '[^,]+', 1, LEVEL) AS SCORT
FROM
(SELECT 'Student001,Student001,Student002,Student002,Student003' AS STUDENT,
'CHINESE,ENGLISH,CHINESE,MATH,ENGLISH' AS SUBJECT,
'60,70,80,90,100' AS SCORT
FROM dual
) temp
CONNECT BY LEVEL <= REGEXP_COUNT(temp.STUDENT, '[^,]+');
--Student001 CHINESE 60
--Student001 ENGLISH 70
--Student002 CHINESE 80
--Student002 MATH 90
--Student003 ENGLISH 100
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。