在Oracle中将char拆分为多行
Posted
技术标签:
【中文标题】在Oracle中将char拆分为多行【英文标题】:Splitting char to multiple rows in Oracle 【发布时间】:2016-09-28 01:54:39 【问题描述】:表格如下:
YEAR | MONTH | HOLIDAY |
2015 | 10 | # # # ### |
2015 | 11 | # # # # # |
我想创建以下内容:
YEAR | MONTH | DATE | VALUE |
2015 | 10 | 01 | # |
2015 | 10 | 02 | |
2015 | 10 | 03 | |
2015 | 10 | 04 | # |
UNTIL
2016 | 11 | 30 | # |
我已经看到了一些关于堆栈的解决方案,但它无法正常工作 任何帮助将不胜感激
【问题讨论】:
这看起来您想使用UNPIVOT
,但无法获得准确的答案,因为您将实际数据替换为#
。
【参考方案1】:
嗯,我不知道你为什么要去 11 月 31 日,这个不存在的日期。但是,这里有一个想法:
with n as (
select level as n
from dual
connect by level <= 31
)
select t.year, t.month, n.n as day,
substr(t.holidays, n.n, 1) as holiday
from t join
n
on n.n <= length(t.holiday);
【讨论】:
对不起,这是我的错,直到11月30日实际上每个月的假期列的长度=当月的长度 @user3863074 。 . .我想通了,这就是我在回答中使用它的原因。以上是关于在Oracle中将char拆分为多行的主要内容,如果未能解决你的问题,请参考以下文章