加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

MsSqlServer2000上的split函数

发布时间:2020-12-12 15:50:12 所属栏目:MsSql教程 来源:网络整理
导读:把一个字段里的字符按特定的分隔符拆分成多个字段. ? ? ? TABLE? A? ? ? ? IDS? ? ? ? a,b,c,d,e,? ? ? ? 请问如何把字段IDS里的字符按逗号拆分开放在TABLE? B的五个字段里面?? ? ? ? ID_A? ? ? ID_B? ? ? ? ID_C? ? ? ID_D? ? ? ID_E? ? a? ? ? ? ? ? b? ?

把一个字段里的字符按特定的分隔符拆分成多个字段.
? ? ? 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. */

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读