将XML节点转换为SQL Server中的行

Tan*_*ner 2 xml sql-server sql-server-2012

考虑以下示例:

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>'
Run Code Online (Sandbox Code Playgroud)

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

我不能完全正确地理解语法,我已经尝试了许多示例:

SELECT T.r.value('.','int') as id
FROM @somexml.nodes('/Settings/Users') T(r)
Run Code Online (Sandbox Code Playgroud)

返回值:

|ID    |
|------|
|12345 |
Run Code Online (Sandbox Code Playgroud)

下列:

SELECT T.r.query('.') as id
from @somexml.nodes('/Settings/Users/ID') as T(r) 
Run Code Online (Sandbox Code Playgroud)

返回值:

|ID         |
|-----------|
|<ID>1</ID> |
|<ID>2</ID> |
|<ID>3</ID> |
|<ID>4</ID> |
|<ID>5</ID> |
Run Code Online (Sandbox Code Playgroud)

我越来越近了,但是我想删除XML标签以保留ID值,如下所示:

|ID |
|---|
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
Run Code Online (Sandbox Code Playgroud)

如果您想以这种方式玩/解决问题,这里有个小提琴:SQL小提琴

一如既往地提供任何帮助。

Gri*_*rim 5

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