【发布时间】: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