0

也许有人可以帮助我,我有一个带有 XML 列的 nRows 的 sql 表。XML 结构如下所示:

<DynamicResults>
  <RegQuery xmlns:xsi="http://www.w3.o....." xmlns:xsd="http://....." REGServer="localhost" REGHive="HKEY_LOCAL_MACHINE" REGSubKey="SOFTWARE\Microsoft\Windows\BlaBla" />
</DynamicResults>

我的问题:我如何查询 xml,我想知道在属性“REGSubKey”中具有指定值的 /DynamicResults/RegQuery 是否具有子节点...

多谢

4

2 回答 2

2

我通常这样做的方式是使用内置的 XML 函数(如果您使用的是 SQL Server 2005 或更高版本)。

查看此 MSDN 页面:http: //msdn.microsoft.com/en-us/library/ms178030

这是一个返回特定 reg 键的子节点数的示例SOFTWARE\Microsoft\Windows\BlaBla...

DECLARE @x xml 
SET @x='<DynamicResults>
  <RegQuery xmlns:xsi="http://www.w3.o....." xmlns:xsd="http://....." REGServer="localhost" REGHive="HKEY_LOCAL_MACHINE" REGSubKey="SOFTWARE\Microsoft\Windows\BlaBla">
    <SubNode />
    <SubNode />
  </RegQuery>
  <RegQuery xmlns:xsi="http://www.w3.o....." xmlns:xsd="http://....." REGServer="localhost" REGHive="HKEY_LOCAL_MACHINE" REGSubKey="SOFTWARE\Microsoft\Windows\BlaBla2" />
  <RegQuery xmlns:xsi="http://www.w3.o....." xmlns:xsd="http://....." REGServer="localhost" REGHive="HKEY_LOCAL_MACHINE" REGSubKey="SOFTWARE\Microsoft\Windows\BlaBla3" />
</DynamicResults>'
SELECT @x.value('count(/DynamicResults/RegQuery[@REGSubKey="SOFTWARE\Microsoft\Windows\BlaBla"]/*)','INT')
GO
于 2012-08-29T08:03:56.677 回答
0
select *
from table
where XmlField.value('count(/DynamicResults/RegQuery[@REGSubKey="SOFTWARE\Microsoft\Windows\BlaBla"]/*)','int')>0
于 2012-08-29T08:01:52.960 回答