我是SQL的新手,并且陷入了一种非常常见的情况。我有一个带有嵌套子项的xml作为我的存储过程
中的输入参数 <XML>
<Id>1</Id>
<Age>1</Age>
<Address>Test</Address>
.
.
<Days>
<long>1</long>
<long>2</long>
<long>3</long>
<long>7</long>
</Days>
</XML>
我可以通过
选择XML标签内的数据 Id = t.Xml.value('(./Id)[last()]','int')
但我不知道如何在XML / Days中选择所有长值。我试过了
long = t.UserXml.value('.','int')
并将所有值返回为1237,但这并不能解决我的问题。我需要不同行中的值,需要将长值插入另一个表中。
请让我知道相同的解决方案。 感谢
答案 0 :(得分:1)
Sqlserver上的Days解决方案可能是
DECLARE @XML XML
SET @XML='<XML>
<Id>1</Id>
<Age>1</Age>
<Address>Test</Address>
<Days>
<long>1</long>
<long>2</long>
<long>3</long>
<long>7</long>
</Days>
</XML>'
SELECT
x.y.value('text()[1]', 'int') as xx
FROM @xml.nodes('XML/Days/long') x(y)