1
我想要获取XML数据并在表的一行中插入每个节点值。例如,我有:将XML节点插入到SQL Server中的表中
<Tags>
<Tag>a</Tag>
<Tag>b</Tag>
<Tag>c</Tag>
</Tags>
,我想插入一个,b和c在名为Tags
表。我应该怎么做?
到目前为止我有这个代码,但我不知道如何在xquery部分定义@I
。顺便问一下,有没有更简单的方法?
CREATE TABLE #T (tag nvarchar(100))
DECLARE @TagsXML xml
DECLARE @TagsCount int
DECLARE @I int = 0
SET @TagsXML = '<Tags><Tag>a</Tag><Tag>b</Tag><Tag>c</Tag></Tags>'
SET @TagsCount = (SELECT T.x.value('count(Tag)', 'nvarchar(100)') FROM @TagsXML.nodes('Tags') T(x))
WHILE @I < @TagsCount
BEGIN
INSERT INTO #T VALUES ((SELECT T.x.value('concat("Tag[", @I, "]")', 'nvarchar(100)') FROM @TagsXML.nodes('Tags') T(x)))
SET @I = @I + 1
END
SELECT * FROM #T
我真的很感谢:) –