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

转载 2006年06月05日 16:36:00

有表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 行受影响)
--*/

 

相关文章推荐

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

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

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
  • 下载

淘宝分拆为三家独立公司:淘宝、商城和一淘

6月16日,阿里巴巴集团今日宣布,为更精准和有效的服务客户,该公司将会分拆为三个独立的公司,即沿袭原C2C业务的淘宝网(taobao.com),平台型B2C电子商务服务商淘宝商城(tmall.com)...

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

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

树形结构和分拆布局

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

鲍尔默回应股东呼声:分拆微软无任何意义

微软首席执行官史蒂夫·鲍尔默 北京时间11月16日消息,微软首席执行官史蒂夫·鲍尔默(Steve Ballmer)周二在公司年度股东大会中表示,分拆公司没有任何的好处。 在今年的股东大会中...
  • pahxgh
  • pahxgh
  • 2011年12月15日 09:53
  • 673
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【交流】SQL 2005溢用之:分拆列值
举报原因:
原因补充:

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