在Oracle中将char拆分为多行

Splitting char to multiple rows in Oracle

table如下:


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  |    #    |

我已经看到了一些关于堆栈的解决方案,但都行不通
任何帮助将不胜感激

嗯,我不确定你为什么要到 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);