【交流】SQL 2005溢用之:分拆列值 20zjcxc]

发布时间:2016-12-9 10:31:11 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"【交流】SQL 2005溢用之:分拆列值 20zjcxc]",主要涉及到【交流】SQL 2005溢用之:分拆列值 20zjcxc]方面的内容,对于【交流】SQL 2005溢用之:分拆列值 20zjcxc]感兴趣的同学可以参考一下。

有表tb, 如下: id          values ----------- ----------- 1           aa,bb 2           aaa,bbb,ccc 欲按,分拆values列, 分拆后结果如下: id          value ----------- -------- 1           aa 1           bb 2           aaa 2           bbb 2           ccc 之前的老办法, 一般是使用临时表 SELECT TOP 8000 id = IDENTITY(int, 1, 1) INTO # FROM syscolumns a, syscolumns b SELECT A.id, SUBSTRING(A.[values], B.id, CHARINDEX(',', A.[values] + ',', B.id) - B.id) FROM tb A, # B WHERE SUBSTRING(',' + A.[values], B.id, 1) = ',' DROP TABLE #

-- 在sql 2005中, 借用xml, 可以简单地一句来实现这个功能 -- 示例数据 DECLARE @t TABLE(id int, [values] varchar(100)) INSERT @t SELECT 1, 'aa,bb' UNION ALL SELECT 2, 'aaa,bbb,ccc' -- 查询处理 SELECT A.id, B.value FROM( SELECT id, [values] = CONVERT(xml, '<root><v>' + REPLACE([values], ',', '</v><v>') + '</v></root>') FROM @t )A OUTER APPLY( SELECT value = N.v.value('.', 'varchar(100)') FROM A.[values].nodes('/root/v') N(v) )B /*--结果 id          value ----------- -------- 1           aa 1           bb 2           aaa 2           bbb 2           ccc (5 行受影响) --*/

学习一下。

学习 :)

合并与分拆的CLR, sql2005的示例中有: 在安装sql 2005的示例后,默认安装目录为 drive:\Program Files\Microsoft SQL Server\90\Samples\Engine\Programmability\CLR\StringUtilities中

收藏先!工作去了!

收下先~

MARK

收藏,学习

mark

留个记号

mark

上一篇:SQL2005是不是和一些防火墙有冲突 50liaowei0627]
下一篇:初学者请教:关于数据仓库的问题,请各位给点意见 100clock315]

相关文章

相关评论