问题描述
在 oracle 中将 varchar 字段拆分为多行需要一些帮助。 例子: 在给定的数据样本中,订单号是唯一的。我想把服务代码拆分成多行,每个服务代码用|
分隔谢谢!
解决方法
这是一个例子。
示例数据在第 1 - 5 行(您的表格中已经有了,不要输入);执行任务的查询从第 6 行开始。
SQL> with test (order_no,datum,service_cd) as
2 (select 17,date '2016-11-30','2106|2100|2105' from dual union all
3 select 23,'2043|2020|2023|2047' from dual union all
4 select 67,null from dual
5 )
6 select order_no,7 datum,8 regexp_substr(service_cd,'[^|]+',1,column_value) val
9 from test cross join
10 table(cast(multiset(select level from dual
11 connect by level <= regexp_count(service_cd,'\|') + 1
12 ) as sys.odcinumberlist))
13 order by order_no,column_value;
ORDER_NO DATUM VAL
---------- ---------- ----------
17 30/11/2016 2106
17 30/11/2016 2100
17 30/11/2016 2105
23 30/11/2016 2043
23 30/11/2016 2020
23 30/11/2016 2023
23 30/11/2016 2047
67 30/11/2016
8 rows selected.
SQL>