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

原创 2006年06月09日 20:29:00

问题描述:

有表tb, 如下:

id          values

----------- -----------

1           aa,bb

2           aaa,bbb,ccc

 

欲按,分拆values, 分拆后结果如下:

id          value

----------- --------

1           aa

1           bb

2           aaa

2           bbb

2           ccc

 

1. 旧的解决方法

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 #

 

-- 2. 新的解决方法

-- 示例数据

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 行受影响)

--*/

CSDN 社区帖子地址

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

相关文章推荐

在论坛中出现的比较难的sql问题:1(字符串分拆+行转列问题 SQL遍历截取字符串)

最近,在论坛中,出现了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了,所以,我觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。 1...
  • yupeigu
  • yupeigu
  • 2013年10月20日 16:55
  • 1548

SQL各种字符串分拆处理函数

字符串分解 --各种字符串分拆处理函数.sql  -- --各种字符串分函数 if exists (select * from dbo.sysobjects...

1、字符串分拆+行转列问题

最近看到一些比较好的SQL帖子,特地转载过来,以后遇到这些问题也好参考参考...

一个循环更新某库所有表所有非主键列的值方法(sql 2005 & mysql)

1.提取某数据库中所有用户表的所有列:SELECT TOP 100 * FROM syscolumns c WHERE c.id IN (SELECT id FROM sysobjects WHERE...

驱动程序中Irp包的更换与分拆示例

  • 2015年12月05日 00:17
  • 1.37MB
  • 下载

正整数无序分拆算法设计及论证

  • 2012年09月15日 14:51
  • 73KB
  • 下载

【转载】五边形数定理、分拆数

原文博客:http://blog.csdn.net/zhoufenqin/article/details/9821617 分拆数 在将分拆数之前先介绍一点五边形数 http://en.wi...

带有标尺功能的分拆窗口界面

  • 2011年07月05日 20:58
  • 120KB
  • 下载

树形结构和分拆布局

  • 2013年03月14日 09:29
  • 176KB
  • 下载

分拆TableSplit 让多个mapper同时读取

分拆TableSplit 让多个mapper同时读取 默认情况下,一个region是一个tableSplit,对应一个mapper进行读取,但单mapper读取速度较慢,因此想着...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【交流】SQL 2005溢用之:分拆列值
举报原因:
原因补充:

(最多只允许输入30个字)