如何将两个数据拆分为表

GeoVIP

在存储过程中有这样的查询:

declare @col1_list varchar(max) , @col2_list varchar(max)
declare @tbl TABLE (col1 int , col2 int)

set @col1_list = '2|6|7|4|3|'
set @col2_list = '1|'

想要将数据拆分到表中,它应该像

col1  col2
2      1
6      1
7      1
4      1
3      1

例如,也许col1在列表中有一个值,而col2中有许多值

 set @col1_list = '2|'
 set @col2_list = '1|2|3|4'

它应该像:

col1  col2
2      1
2      2
2      3
2      4

怎么做 ?

编辑: *我没有功能的版本,使用XML *

declare @col1_list varchar(max) , @col2_list varchar(max)
declare @tbl TABLE (col1 int , col2 int)

set @col1_list = '2|6|7|4|3|'
set @col2_list = '1|'

DECLARE @myXML1 AS XML = N'<H><r>' + REPLACE(@col1_list, '|', '</r><r>') + '</r></H>'
DECLARE @myXML2 AS XML = N'<H><r>' + REPLACE(@col2_list, '|', '</r><r>') + '</r></H>';

with mycte as (SELECT Vals1.id.value('.', 'NVARCHAR(50)') AS val1
FROM @myXML1.nodes('/H/r') AS Vals1(id)),
mycte1 as (SELECT Vals2.id.value('.', 'NVARCHAR(50)') AS val2
FROM @myXML2.nodes('/H/r') AS Vals2(id))

insert into @tbl (col1,col2)
select val1,val2
from mycte,mycte1
where val1<>'' and val2<>''

select * from @tbl
哈迪·沙里菲(Hadi Sharifi)

试试这个:

CREATE FUNCTION [dbo].[ufnSplit] (@string NVARCHAR(MAX))
RETURNS @parsedString TABLE (rowNo INT,val NVARCHAR(MAX))
AS 
BEGIN
   DECLARE @separator NCHAR(1)
   SET @separator='|'
   DECLARE @position int
   SET @position = 1
   DECLARE @i INT
   SET @string = @string + @separator
   SET @i=1
   WHILE charindex(@separator,@string,@position) <> 0
      BEGIN
         INSERT into @parsedString
         SELECT @i, substring(@string, @position, charindex(@separator,@string,@position) - @position)
         SET @position = charindex(@separator,@string,@position) + 1
         SET @i=@i+1
      END
     RETURN
END

例如:

SELECT ISNULL(t1.val, MAX(t2.val) OVER ()), ISNULL(t2.val, MAX(t2.val) OVER () )
FROM
      (SELECT * FROM  [dbo].[ufnSplit]('1|2|3')) t1
  FULL OUTER JOIN
      (SELECT * FROM  [dbo].[ufnSplit]('4')) t2
  ON t1.rowNo = t2.rowNo

结果:

col1    col2
----    -----
1       4
2       4
3       4

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将一个数组拆分为两个不同的数组?

来自分类Dev

如何将文本文件拆分为两个数组?

来自分类Dev

如何将DataTable拆分为多个数据表c#

来自分类Dev

如何将 8 位输入拆分为两个 4 位数据

来自分类Dev

如何基于原始数据帧中的行总数将数据帧拆分为两个数据帧

来自分类Dev

如何将一个大型数据库表拆分为多个数据库表

来自分类Dev

jQuery-如何将变量拆分为两个不同的ajax请求,然后使用成功数据

来自分类Dev

根据值中的逗号将字典的值拆分为两个数据框列

来自分类Dev

将大数组拆分为两个数组

来自分类Dev

将大数组拆分为两个数组

来自分类Dev

如何将两个数据库表转换为多维JSON文件?

来自分类Dev

如何将数据拆分为datagridview

来自分类Dev

如何将数据拆分为字典?

来自分类Dev

将一个数据框列的列表拆分为两个数据框列

来自分类Dev

如何将pandas DataFrame拆分为多个数据帧?

来自分类Dev

如何将一个数据框列拆分为多列

来自分类Dev

如何将两个单元格拆分为不同数量的行?

来自分类Dev

如何将验证从输入拆分为两个单独的方法?

来自分类Dev

solr:如何将字段拆分为重叠的两个词短语?

来自分类Dev

如何将字符串拆分为两个单独的字符串

来自分类Dev

如何将大字符串拆分为两个不同的数组?

来自分类Dev

如何将两个单独的表中的两列拆分为一个视图中联接的多行?

来自分类Dev

将表拆分为多个数据框

来自分类Dev

将数据框分为两个数据框

来自分类Dev

如何将Int拆分为单个数字?

来自分类Dev

如何将两个分开的数据拆分成两个?

来自分类Dev

如何将数据框中的每一列拆分为两列?

来自分类Dev

如何将数据帧字符串列拆分为两列?

来自分类Dev

如何将行添加到保持元组为元组而不是拆分为两个元素的数据帧中?

Related 相关文章

  1. 1

    如何将一个数组拆分为两个不同的数组?

  2. 2

    如何将文本文件拆分为两个数组?

  3. 3

    如何将DataTable拆分为多个数据表c#

  4. 4

    如何将 8 位输入拆分为两个 4 位数据

  5. 5

    如何基于原始数据帧中的行总数将数据帧拆分为两个数据帧

  6. 6

    如何将一个大型数据库表拆分为多个数据库表

  7. 7

    jQuery-如何将变量拆分为两个不同的ajax请求,然后使用成功数据

  8. 8

    根据值中的逗号将字典的值拆分为两个数据框列

  9. 9

    将大数组拆分为两个数组

  10. 10

    将大数组拆分为两个数组

  11. 11

    如何将两个数据库表转换为多维JSON文件?

  12. 12

    如何将数据拆分为datagridview

  13. 13

    如何将数据拆分为字典?

  14. 14

    将一个数据框列的列表拆分为两个数据框列

  15. 15

    如何将pandas DataFrame拆分为多个数据帧?

  16. 16

    如何将一个数据框列拆分为多列

  17. 17

    如何将两个单元格拆分为不同数量的行?

  18. 18

    如何将验证从输入拆分为两个单独的方法?

  19. 19

    solr:如何将字段拆分为重叠的两个词短语?

  20. 20

    如何将字符串拆分为两个单独的字符串

  21. 21

    如何将大字符串拆分为两个不同的数组?

  22. 22

    如何将两个单独的表中的两列拆分为一个视图中联接的多行?

  23. 23

    将表拆分为多个数据框

  24. 24

    将数据框分为两个数据框

  25. 25

    如何将Int拆分为单个数字?

  26. 26

    如何将两个分开的数据拆分成两个?

  27. 27

    如何将数据框中的每一列拆分为两列?

  28. 28

    如何将数据帧字符串列拆分为两列?

  29. 29

    如何将行添加到保持元组为元组而不是拆分为两个元素的数据帧中?

热门标签

归档