当前位置:首页 > 数据库 > Oracle技术

怎么根据分隔符一行转多行

优良自学吧提供怎么根据分隔符一行转多行,如何根据分隔符一行转多行?有个表是这样: 1                     &

如何根据分隔符一行转多行?
有个表是这样:
1                            2
a,b,c,d                  h

要变成

1     2
a     h
b     h
c     h
d     h

该怎么办?
越简便越好

------解决思路----------------------
--方法1
SELECT
substring(a.[1],b.number,charindex(',',a.[1]+',',b.number)-b.number)[1]
,[2]
from [TB] a
join master..spt_values b on b.type='P'
where charindex(',',','+a.[1],b.number)=b.number
--方法2
SELECT T2.V [1],T1.[2] FROM
(SELECT [2],CONVERT(XML,'<V>'+REPLACE([1],',','</V><V>')+'</V>')VS FROM TB)T1
CROSS APPLY(SELECT N.V.value('.','NVARCHAR(50)')V FROM T1.VS.nodes('//V')N(V))T2

------解决思路----------------------
下面语句是拆分字段A,参考下吧,这类拆分写法基本都是固定的
select REGEXP_SUBSTR(A, '[^,]+', 1, LEVEL) A,B,C
from T
CONNECT BY LEVEL <= REGEXP_COUNT(A, '[^,]+')
and rowid= prior rowid
and prior dbms_random.value is not null;

------解决思路----------------------
select ,regexp_substr('李四,张三,王五,赵六','([^,]+)',1,rownum) 
from dual 
connect by 
rownum<(length(regexp_replace('李四,张三,王五,赵六','[^,]',''))+2)

(本文来自互联网,不代表搜站(http://www.ylzx8.cn/)的观点和立场)
本站所有内容来自互联网,若本站收录的信息无意侵犯了贵司版权,请给我们来信(ylzx8cn@163.com),我们会及时处理和回复,谢谢