我正在尝试使用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>
答案 0 :(得分:2)
如果您将XML存储在列中,其数据类型应真正为XML
- 而不是varchar
....
如果您确实该列为XML
,那么您可以执行以下操作:
SELECT *
FROM dbo.YourTable
WHERE ColXml.exist('/appSettings/add[@Value="Tom"]') = 1
通过此操作,您基本上会检查是否存在一个具有<add>
属性的条目Value="Tom"
- 如果存在,您将从数据库表中选择该行。
使用varchar
列,您可能需要使用
WHERE CAST(ColXml AS XML).exist('/appSettings/add[@Value="Tom"]') = 1
为了获得XML
值,以便可以应用XQuery .exist()
方法 - 但同样:您应该真正将该列转换为XML
!