【发布时间】:2019-06-06 20:19:36
【问题描述】:
我有一个节点名称相同的 XML 列。
这就是 XML 列的样子。它有三个Mapping 节点。
<Mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Mapping>
<ID>1</ID>
<Name>John</Name>
</Mapping>
<Mapping>
<ID>2</ID>
<Name>Jill</Name>
</Mapping>
<Mapping>
<ID>3</ID>
<Name>Jason</Name>
</Mapping>
</Mappings>
预期结果集
ID Name
------------------------
1 John
2 Jill
3 Jason
这就是我尝试做的事情
select
convert(varchar(50), ID.query('./text()')) as ID,
convert(varchar(50), fName.query('./text()')) as [Name]
from [MyTable]
cross apply XMLCol.nodes('/Mappings/Mapping/ID') as map1(ID)
cross apply XMLCol.nodes('/Mappings/Mapping/Name') as map2(fName)
这对所有 3 个名称重复 ID 3 次。
我只想用相应的名称重复一次 ID。
【问题讨论】:
标签: sql sql-server xml tsql