有个表是这样:
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)