有人可以帮我解决问题吗?
我有一个专栏" x"在表格"测试"
X只有一行数据= 1,2,3,4,5,7,9,11就像这样。
我想将行转换为列,分隔符将是","。
我有2列a,b
数据
a b
1 2
3 4
5 6
7 8
9 10
我希望结果是1-2,3-4,5-6,7-8,9-10(意味着形成库存行)
我能实现这个目标吗?答案 0 :(得分:2)
您可以尝试以下
select distinct regexp_substr(x,'[^,]+',1,level) from table
connect by level <=regexp_count(x,',')+1;
答案 1 :(得分:1)
由于您的问题尚不清楚是否要拆分列或连接它,所以我在这里为您提供两种解决方案: -
用于在具有分隔符的oracle中拆分字符串&#39;,&#39;使用以下查询: -
select DISTINCT to_number(regexp_substr(X,'[^,]+',1,level)) numbers
from your_table
connect by to_number(regexp_substr(X,'[^,]+',1,level)) is not null
order by 1;
用于连接具有多行的oracle中的列的值 与分隔符&#39;,&#39;使用以下查询: -
select wm_concat(X) as column_x from your_table ;
以下是您的问题的完整演示代码,解决方案查询将提供所需的结果......
create table dumdd
(seq_id number,value varchar2(50))
insert all
into dumdd values(1,'1,2,3,4,5,7,9,11')
into dumdd values(2,'1,2,3,4,5,7,9,11')
into dumdd values(3,'1,2,3,4,5,7,9,11')
select * from dual;
commit;
select seq_id,numbers from
(
select distinct seq_id,to_number(regexp_substr(value,'[^,]+',1,level)) numbers
from dumdd
connect by to_number(regexp_substr(value,'[^,]+',1,level)) is not null
)
where seq_id=1
order by 1,2;