Declare @Var varchar(MAX)
Set @Var = '1,2,3'
DECLARE @XML AS XML
DECLARE @Delimiter AS CHAR(1) =','
SET @XML = CAST(('<X>'+REPLACE(@Var,@Delimiter ,'</X><X>')+'</X>') AS XML)
Declare @Var1 nvarchar(MAX)
Set @Var1 = '10,11,12'
DECLARE @XML1 AS XML
DECLARE @Delimiter1 AS CHAR(1) =','
SET @XML1 = CAST(('<X>'+REPLACE(@Var1,@Delimiter1 ,'</X><X>')+'</X>') AS XML)
DECLARE @temp TABLE (ID INT,ID1 INT);
INSERT INTO @temp (ID,ID1) values
(SELECT N.value('.', 'INT') AS ID FROM @XML.nodes('X') AS T(N),
SELECT N1.value('.', 'INT') AS ID1 FROM @XML1.nodes('X') AS T(N1))
select * from @temp
答案 0 :(得分:0)
您有两个逗号分隔值,但它们之间没有关系。我使用SQl
函数在Row_number
下面查询,并且任意加入两个逗号分隔的结果。请检查 -
Declare @Var varchar(MAX)
Set @Var = '1,2,3'
DECLARE @XML AS XML
DECLARE @Delimiter AS CHAR(1) =','
SET @XML = CAST(('<X>'+REPLACE(@Var,@Delimiter ,'</X><X>')+'</X>') AS XML)
Declare @Var1 nvarchar(MAX)
Set @Var1 = '10,11,12'
DECLARE @XML1 AS XML
DECLARE @Delimiter1 AS CHAR(1) =','
SET @XML1 = CAST(('<X>'+REPLACE(@Var1,@Delimiter1 ,'</X><X>')+'</X>') AS XML)
DECLARE @temp TABLE (ID INT,ID1 INT);
INSERT INTO @temp (ID,ID1)
SELECT
X.ID, Y.ID1
from
(SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS RowId,N.value('.', 'INT') AS ID FROM @XML.nodes('X') AS T(N)) as X
INNER JOIN
(SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS RowId,N1.value('.', 'INT') AS ID1 FROM @XML1.nodes('X') AS T(N1)) as Y
ON X.RowId = Y.RowId
SELECT * FROM @temp
注 - 上述查询存在一些问题,即第一个逗号分隔字符串的第一个值可以与第二个逗号分隔字符串的第三个值连接。