本文主要是介绍分拆列值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
分拆列值
有表tb, 如下:
id value
----------- -----------
1 aa,bb
2 aaa,bbb,ccc
欲按id,分拆value列, 分拆后结果如下:
id value
----------- --------
1 aa
1 bb
2 aaa
2 bbb
2 ccc
1. 旧的解决方法(sql server 2000)
select a.id, substring(a.[value], b.number, charindex(',', a.[value] + ',', b.number) - b.number)
FROM tb a, master..spt_values b
WHERE b.type='p' and substring(',' + a.[value],b.number, 1) = ','
2. 新的解决方法(sql server 2005)
create table tb(id int,value varchar(30))
insert into tb values(1,'aa,bb')
insert into tb values(2,'aaa,bbb,ccc')
go
SELECT a.id, b.value
FROM(
SELECT id, [value] = CONVERT(xml,' <root> <v>' + REPLaCE([value], ',', ' </v> <v>') + ' </v> </root>') FROM tb
)a
OUTER aPPLY(
SELECT value = N.v.value('.', 'varchar(100)') FROM a.[value].nodes('/root/v') N(v)
)b
DROP TabLE tb
/*
id value
----------- ------------------------------
1 aa
1 bb
2 aaa
2 bbb
2 ccc
(5 行受影响)
*/
这篇关于分拆列值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!