3

我对 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>

我能够通过

Id = t.Xml.value('(./Id)[last()]','int')

但我不知道如何在 XML/Days 中选择所有长值。我试过了

 long = t.UserXml.value('.','int')

并将所有值返回为 1237 但这并不能解决我的问题。我需要不同行中的值,并且需要将长值插入另一个表中。

请让我知道可能的解决方案。谢谢

4

1 回答 1

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)
于 2013-07-16T05:34:13.570 回答