【问题标题】:Convert XML Nodes To Rows in SQL Server在 SQL Server 中将 XML 节点转换为行
【发布时间】:2014-03-17 10:51:32
【问题描述】:

考虑以下示例:

declare @somexml as xml

set @somexml = '
<Settings>
    <Users>
        <ID>1</ID>
        <ID>2</ID>
        <ID>3</ID>
        <ID>4</ID>
        <ID>5</ID>
    </Users>
</Settings>'

上面的XML 有一些ID 值,我需要将它们转换为可在临时表中用于执行连接的数据行。

我的语法不太正确,我尝试了一些我遇到的示例:

SELECT T.r.value('.','int') as id
FROM @somexml.nodes('/Settings/Users') T(r)

返回:

|ID    |
|------|
|12345 |

以下内容:

SELECT T.r.query('.') as id
from @somexml.nodes('/Settings/Users/ID') as T(r) 

返回:

|ID         |
|-----------|
|<ID>1</ID> |
|<ID>2</ID> |
|<ID>3</ID> |
|<ID>4</ID> |
|<ID>5</ID> |

我快接近了,但我想删除 XML 标记以保留 ID 值,如下所示:

|ID |
|---|
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |

如果你想这样玩/解决,这里有一个小提琴:SQL Fiddle

一如既往地感谢任何帮助。

【问题讨论】:

    标签: sql-server xml sql-server-2012


    【解决方案1】:

    T.r.query('.') as id 替换为T.r.value('.', 'INT') as id

    【讨论】:

      【解决方案2】:
      SELECT T.r.value('.','int') as id
      FROM @somexml.nodes('/Settings/Users/ID') T(r)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-28
        • 1970-01-01
        • 2014-11-21
        相关资源
        最近更新 更多