Spe*_*eed 4 sql sql-server openxml sql-server-2008 sql-server-openxml
我有这样的数据结构:
<rootnode>
<group>
<id>1</id>
<anothernode>first string</anothernode>
<anothernode>second string</anothernode>
</group>
<group>
<id>2</id>
<anothernode>third string</anothernode>
<anothernode>fourth string</anothernode>
</group>
</rootnode>
Run Code Online (Sandbox Code Playgroud)
以下代码:
EXEC sp_xml_preparedocument @index OUTPUT, @XMLdoc
SELECT *
FROM OPENXML (@index, 'rootnode/group')
WITH
(
id int 'id',
anothernode varchar(30) 'anothernode'
)
Run Code Online (Sandbox Code Playgroud)
这给了我结果
id | anothernode
————————————————
1 | first string
2 | third string
Run Code Online (Sandbox Code Playgroud)
如何在显示所有四个字符串的位置显示此结果?
id | anothernode
————————————————
1 | first string
1 | second string
2 | third string
2 | fourth string
Run Code Online (Sandbox Code Playgroud)
SELECT *
FROM OPENXML (@index, 'rootnode/group/anothernode')
WITH
(
id int '../id',
anothernode varchar(30) '.'
)
Run Code Online (Sandbox Code Playgroud)
或者您可以使用XML数据类型,如下所示:
SELECT G.N.value('(id/text())[1]', 'int') AS id,
A.N.value('text()[1]', 'varchar(30)') AS anothernode
FROM @XMLDoc.nodes('rootnode/group') AS G(N)
CROSS APPLY G.N.nodes('anothernode') AS A(N)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8624 次 |
| 最近记录: |