[英]ORACLE: Splitting a string into multiple rows
From Oracle 12, you can use:来自 Oracle 12,您可以使用:
SELECT branch_code, year, month, day, holiday
FROM branches
CROSS JOIN LATERAL (
SELECT LEVEL AS day,
SUBSTR(holiday_list, LEVEL, 1) AS holiday
FROM DUAL
CONNECT BY LEVEL <= LENGTH(holiday_list)
)
Which, for the sample data:其中,对于示例数据:
CREATE TABLE branches (BRANCH_CODE, YEAR, MONTH, HOLIDAY_LIST) AS
SELECT '001', 2021, 1, 'HHHWWWHHHHWWWWWHHWWWWWHHWWWWWHH' FROM DUAL UNION ALL
SELECT '001', 2021, 2, 'WWWWWHHWWWWWHHWWWWWHHWHWWWHH' FROM DUAL
Outputs:输出:
BRANCH_CODE分行代码 YEAR年 MONTH月 DAY天 HOLIDAY假期 001 001 2021 2021年 1 1个 1 1个 H H 001 001 2021 2021年 1 1个 2 2个 H H 001 001 2021 2021年 1 1个 3 3个 H H 001 001 2021 2021年 1 1个 4 4个 W W ... ... ... ... ... ... ... ... ... ... 001 001 2021 2021年 1 1个 29 29 W W 001 001 2021 2021年 1 1个 30 30 H H 001 001 2021 2021年 1 1个 31 31 H H 001 001 2021 2021年 2 2个 1 1个 W W 001 001 2021 2021年 2 2个 2 2个 W W 001 001 2021 2021年 2 2个 3 3个 W W ... ... ... ... ... ... ... ... ... ... 001 001 2021 2021年 2 2个 26 26 W W 001 001 2021 2021年 2 2个 27 27 H H 001 001 2021 2021年 2 2个 28 28 H H
If it's Oracle:如果是 Oracle:
with data AS (
select 'WWWWWHHWWWWWHHWWWWWHHWHWWWHH' AS letters
from dual
)
select substr (
letters,
level,
1
) value
from data
connect by level <=
length ( letters )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.