如何从SQL中的xml中检索所有值

时间:2013-07-16 04:56:02

标签: mysql sql sql-server sql-server-2008

我是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,但这并不能解决我的问题。我需要不同行中的值,需要将长值插入另一个表中。

请让我知道相同的解决方案。 感谢

1 个答案:

答案 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)