sql server 2005中分隔列中数据

-- 建立辅助表
SET  NOCOUNT  ON ;
USE  AdventureWorks;
GO
IF   OBJECT_ID ( ' dbo.Nums ' IS   NOT   NULL
  
DROP   TABLE  dbo.Nums;
GO
CREATE   TABLE  dbo.Nums(n  INT   NOT   NULL   PRIMARY   KEY );
DECLARE   @max   AS   INT @rc   AS   INT ;
SET   @max   =   1000000 ;
SET   @rc   =   1 ;

INSERT   INTO  Nums  VALUES ( 1 );
WHILE   @rc   *   2   <=   @max
BEGIN
  
INSERT   INTO  dbo.Nums  SELECT  n  +   @rc   FROM  dbo.Nums;
  
SET   @rc   =   @rc   *   2 ;
END

INSERT   INTO  dbo.Nums
  
SELECT  n  +   @rc   FROM  dbo.Nums  WHERE  n  +   @rc   <=   @max ;

-- 示例表
IF   OBJECT_ID ( ' dbo.Arrays ' IS   NOT   NULL
  
DROP   TABLE  dbo.Arrays;
GO

CREATE   TABLE  dbo.Arrays
(
  arrid 
VARCHAR ( 10 )    NOT   NULL   PRIMARY   KEY ,
  array 
VARCHAR ( 8000 NOT   NULL
)

INSERT   INTO  Arrays(arrid, array)  VALUES ( ' A ' ' 20,22,25,25,14 ' );
INSERT   INTO  Arrays(arrid, array)  VALUES ( ' B ' ' 30,33,28 ' );
INSERT   INTO  Arrays(arrid, array)  VALUES ( ' C ' ' 12,10,8,12,12,13,12,14,10,9 ' );
INSERT   INTO  Arrays(arrid, array)  VALUES ( ' D ' ' -4,-6,-4,-2 ' );

-- 实施方法
SELECT  arrid,  substring (array,n, charindex ( ' , ' ,array + ' , ' ,n) - n), n
FROM  dbo.Arrays
  
JOIN  dbo.Nums
    
ON  n  <=   LEN (array)
    
AND   SUBSTRING ( ' , ' + array, n,  1 =   ' , '
/**/ /*
select arrid,charindex(',',array+',',n)-n from dbo.Arrays  JOIN dbo.Nums
    ON n <= LEN(array)
    AND SUBSTRING(','+array, n, 1) = ','
*/

/**/ /*
SELECT arrid, array, n
FROM dbo.Arrays
  JOIN dbo.Nums
    ON n <= LEN(array)
    AND SUBSTRING(array, n, 1) = ','
*/
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值