【问题标题】:XQuery with SQLServer finding nodes with a wildcardXQuery 与 SQLServer 使用通配符查找节点
【发布时间】:2015-04-09 09:38:53
【问题描述】:

我有一个类似于下面的 XML 文档,其中多个链接存储在 SQLServer 数据库中

<Pop_Up>
    <Link1_Url />
    <Link2_Url />
    <Link3_Url>Some URL</Link3_Url>
</Pop_Up>

我正在尝试使用以下方法提取所有链接:

select t.Data_xml.value('(/Pop_Up/Link*_Url)[1]','varchar(500)') as link
from TableName t

但似乎不允许使用通配符 *。有没有其他方法可以做到这一点?

【问题讨论】:

    标签: sql-server xquery xquery-sql


    【解决方案1】:

    我会遍历节点并获取它们的值,而名称与您的条件相对应,例如:

    DECLARE @xml XML = '<Pop_Up>
        <Link1_Url />
        <Link2_Url />
        <Link3_Url>Some URL</Link3_Url>
    </Pop_Up>'
    
    SELECT 
        t2.c2.value('.', 'varchar(500)') linkValue,
        t2.c2.value('fn:local-name(.)', 'nvarchar(50)') as linkKey
    FROM @xml.nodes('//Pop_Up') t(c)
        CROSS APPLY t.c.nodes('*') AS t2(c2)
    WHERE t2.c2.value('fn:local-name(.)', 'nvarchar(50)') LIKE 'Link%_Url'
    

    结果:

    linkValue   linkKey
                Link1_Url
                Link2_Url
    Some URL    Link3_Url
    

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 2015-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多