【问题标题】:XPath get value of attribute 'A' based on attribute 'B' in SQL Server xmlXPath 基于 SQL Server xml 中的属性“B”获取属性“A”的值
【发布时间】:2012-01-09 12:08:05
【问题描述】:

我在 SQL Server 中有这个 XML

<data>
<add key="images" value="image/path/img.gif" />
<data>

我想用 key = "images" 选择每个 "add" 节点的 value 属性

我现在拥有的是:

SELECT ID, Data from Items 
where Data.value('(//data/add[@key="images"]/@value)[1]', 'nvarchar') Like '%img%'

有什么建议吗?

【问题讨论】:

    标签: sql xml sql-server-2008 xpath


    【解决方案1】:

    如果您只为从 XML 中检索到的 nvarchar 指定大小,那么您所拥有的一切都很好。

    SELECT ID, Data
    from Items 
    where Data.value('(//data/add[@key="images"]/@value)[1]', 'nvarchar(100)') Like '%img%'
    

    在这里我指定了100,您可以将其设置为更适合您的情况。如果没有大小,列的大小将是1

    【讨论】:

      【解决方案2】:

      使用这个 XPath 表达式

      (//data
          /add
            [@key="images"]
               /@value
                  [contains(.,"img")]
       )
       [1]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-19
        • 1970-01-01
        • 2017-02-14
        • 2015-12-16
        相关资源
        最近更新 更多