【问题标题】:How can I get the Value of one of the add key fields (SQL Server 2012)如何获取添加键字段之一的值(SQL Server 2012)
【发布时间】:2017-05-10 21:29:15
【问题描述】:

我正在尝试使用 SQL 语句获取其中一个添加键节点的值。 像

SELECT ColXML from table where value = 'Tom'

我只想要具有此值的行,因为其他行包含相同的 XML 但具有不同的值。 该表是 ID, colXML, Createtime colXML 列也是一个 VARCHAR。

<?xml version="1.0" encoding="utf-8"?>
<appSettings>
     <add key="1" Value="John">
     <add key="2" Value="Tom">
     <add key="3" Value="Eric">
     <add key="4" Value="Jane">
     <add key="5" Value="Sarra">
     <add key="6" Value="Suzie">
     <add key="7" Value="Rick">
     <add key="8" Value="Jim">
</appSettings>

【问题讨论】:

    标签: xml tsql sql-server-2012


    【解决方案1】:

    如果您将 XML 存储在列中,其数据类型应该真的XML - 而不是 varchar ....

    如果您确实有列为XML,那么您可以执行以下操作:

    SELECT *
    FROM dbo.YourTable
    WHERE ColXml.exist('/appSettings/add[@Value="Tom"]') = 1
    

    这样,您基本上是在检查是否存在具有 Value="Tom" 属性的条目 &lt;add&gt; - 如果存在,则从数据库表中选择该行。

    对于您的 varchar 列,您可能需要使用

    WHERE CAST(ColXml AS XML).exist('/appSettings/add[@Value="Tom"]') = 1
    

    为了获得 XML 值,以便可以应用 XQuery .exist() 方法 - 但同样:您应该真的将该列转换为 XML

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 2014-12-27
      相关资源
      最近更新 更多