繁体   English   中英

如何从具有多个在父节点下相同的节点的xml中提取数据到sql中的表

[英]how to extract data from xml having multiple nodes which are same under a parent node into a table in sql

我有一个像

<list of roleids>
  <roleid> 1 </roleid>
  <roleid> 2 </roleid>
  <roleid> 3 </roleid>
  <roleid> 4 </roleid>
</list of Roleids>

我想要带有RoleID列的表中的roleid值

我已尝试使用以下查询,但未获得预期的输出

 declare @ListOfRoleID XML
    set @ListOfRoleID = 
    '<list>
    <roleid>1</roleid>
    <roleid>2</roleid>
    </list>'

    DECLARE @RoleIDList TABLE (RoleID int)

    INSERT INTO @RoleIDList(RoleID)

    SELECT X1.value('(roleid)[1]','INT') as roleid
    from @ListOfRoleID.nodes('/list') as ListOfRoleID(x)
    CROSS APPLY @RoleIDList.nodes('/list') AS ListOfRoleID1 (X1)

您要投影.nodes('/list/roleid') ,这将为每个roleid创建一行。 然后提取值。 无需交叉申请。 参见sqlfiddle

 declare @ListOfRoleID XML = '<list>
    <roleid>1</roleid>
    <roleid>2</roleid>
    <roleid>3</roleid>
    </list>';

SELECT x.value('.','INT') as roleid
from @ListOfRoleID.nodes('/list/roleid') as ListOfRoleID(x);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM