微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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,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,@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,','as nvarchar(2)) as a ,
  29.            cast( DBO.SPLIT_STR(IDS,'as nvarchar(2)) as b ,
  30.            cast( DBO.SPLIT_STR(IDS,3,'as nvarchar(2)) as c ,4,'as nvarchar(2)) as d ,5,'as nvarchar(2)) as e 
  31. from 
  32.   TB
  33. /*
  34. ID          a    b    c    d    e
  35. ----------- ---- ---- ---- ---- ----
  36. 1           a    b    c    d    e
  37. 2           F    G    K    L    M
  38. */

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐