当前位置:   article > 正文

SqlServer技巧:使用APPLY替代游标解决逐行运算问题_sqlserver代替游标

sqlserver代替游标

使用情形:

1. 想将某表关联表值函数返回的表

例如:某表有Col1,Col2两列,想将Col2中的文本拆分为多行,并在拆分后保留Col1和Col2的对应关系

--方法1:使用游标,逐行拆分后拼接(略)
--方法2:使用APPLY进行逐行运算

  1. --表值函数 dbo.SplitString:按照分隔符将文本转换为表
  2. declare @str1 varchar(max)
  3. set @str1 = '7,8,9'
  4. SELECT * FROM dbo.SplitString(@str1,',',1)
  5. --示例:某表有Col1,Col2两列,想将Col2中的文本拆分为多行,并在拆分后保留Col1和Col2的对应关系
  6. CREATE TABLE #TMP(
  7. NAME VARCHAR(100) NULL,
  8. STRING VARCHAR(MAX) NULL
  9. )
  10. TRUNCATE TABLE #TMP
  11. INSERT INTO #TMP(NAME, STRING)
  12. VALUES('TEST111','2,3,4'),
  13. ('TEST222','6,7'),
  14. ('TEST222',null)
  15. --方法1:使用游标,逐行拆分后拼接(略)
  16. --方法2:使用APPLY进行逐行运算
  17. --根据某列一行变多行,并保留其他列的对应关系
  18. SELECT C.NAME, A.Value
  19. FROM #TMP C
  20. CROSS APPLY dbo.SplitString(C.STRING,',',1) A --去除NULL列
  21. SELECT C.NAME, A.Value
  22. FROM #TMP C
  23. OUTER APPLY dbo.SplitString(C.STRING,',
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/409842
推荐阅读
相关标签
  

闽ICP备14008679号