【发布时间】:2018-07-07 21:55:51
【问题描述】:
我有一个 XML 数据类型的字段,下面是我保存在该字段中的 XML 数据示例。现在,我想通过使用下面的查询选择在<SiteId> 标签内具有“1”的数据,但没有结果。
SELECT [SettingsID]
,[XMLData]
FROM Settings
Where [XMLData].exist('/Settings/SiteId/text()[contains(.,"1")]') =1
XMLDATA sample
<Settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SiteId>1</SiteId>
<ModuleId xsi:nil="true" />
<TabId xsi:nil="true" />
<Version>0</Version>
</Settings>
有人对此有想法吗?
【问题讨论】:
-
您使用的是哪个 dbms? (该查询是特定于产品的。)
-
@jarlh, ms sql 2012
-
@crisgomez 我刚刚针对我的模型表测试了您的查询(请参阅答案),它似乎有效...请注意,
contains会在任何文本中找到包括1在内的任何文本位置 -
@crisgomez 我刚刚改写了你的标题 - 如果我没有正确理解,请检查并回滚更改!
标签: xml tsql xpath sql-server-2012 xquery