MsSqlServer2000上的split函数

把一个字段里的字符按特定的分隔符拆分成多个字段.
      TABLE  A 
      IDS 
      a,b,c,d,e, 
   
  请问如何把字段IDS里的字符按逗号拆分开放在TABLE  B的五个字段里面? 
   
  ID_A      ID_B        ID_C      ID_D      ID_E 
  a            b              c            d            e 

 

 

  1. CREATE TABLE TB (ID int, IDS nvarchar(100))
  2. INSERT INTO TB 
  3. SELECT 1,'a,b,c,d,e'
  4. UNION ALL
  5. SELECT 2,'F,G,K,L,M,N'
  6. IF OBJECT_ID('DBO.SPLIT_STR') IS NOT NULL
  7. DROP FUNCTION DBO.SPLIT_STR
  8. GO
  9. CREATE FUNCTION DBO.SPLIT_STR(
  10. @S varchar(8000),      --包含多个数据项的字符串
  11. @INDEX int,             --要获取的数据项的位置
  12. @SPLIT varchar(10)     --数据分隔符
  13. )
  14. RETURNS VARCHAR(100)
  15. AS
  16. BEGIN
  17. IF @S IS NULL RETURN(NULL)
  18. DECLARE @SPLITLEN int
  19. SELECT @SPLITLEN=LEN(@SPLIT+'A')-2
  20. WHILE @INDEX>1 AND CHARINDEX(@SPLIT,@S+@SPLIT)>0
  21. SELECT @INDEX=@INDEX-1,@S=STUFF(@S,1,CHARINDEX(@SPLIT,@S+@SPLIT)+@SPLITLEN,'')
  22. RETURN(ISNULL(LEFT(@S,CHARINDEX(@SPLIT,@S+@SPLIT)-1),''))
  23. END
  24. GO
  25. PRINT DBO.SPLIT_STR('AA|BB|CC',2,'|')
  26. --
  27. GO
  28. select ID, cast( DBO.SPLIT_STR(IDS,1,','as nvarchar(2)) as a ,
  29.            cast( DBO.SPLIT_STR(IDS,2,','as nvarchar(2)) as b ,
  30.            cast( DBO.SPLIT_STR(IDS,3,','as nvarchar(2)) as c ,
  31.            cast( DBO.SPLIT_STR(IDS,4,','as nvarchar(2)) as d ,
  32.            cast( DBO.SPLIT_STR(IDS,5,','as nvarchar(2)) as e 
  33. from 
  34.   TB
  35. /*
  36. ID          a    b    c    d    e
  37. ----------- ---- ---- ---- ---- ----
  38. 1           a    b    c    d    e
  39. 2           F    G    K    L    M
  40. */    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值