TSQL - Query XML



也许有人能帮我,我有一个带nRows和XML列的sql表。XML结构如下:

<DynamicResults>
  <RegQuery xmlns:xsi="http://www.w3.o....." xmlns:xsd="http://....." REGServer="localhost" REGHive="HKEY_LOCAL_MACHINE" REGSubKey="SOFTWAREMicrosoftWindowsBlaBla" />
</DynamicResults>

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

非常感谢

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

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

这里是一个返回特定reg密钥SOFTWAREMicrosoftWindowsBlaBla的子节点数量的示例。。。

DECLARE @x xml 
SET @x='<DynamicResults>
  <RegQuery xmlns:xsi="http://www.w3.o....." xmlns:xsd="http://....." REGServer="localhost" REGHive="HKEY_LOCAL_MACHINE" REGSubKey="SOFTWAREMicrosoftWindowsBlaBla">
    <SubNode />
    <SubNode />
  </RegQuery>
  <RegQuery xmlns:xsi="http://www.w3.o....." xmlns:xsd="http://....." REGServer="localhost" REGHive="HKEY_LOCAL_MACHINE" REGSubKey="SOFTWAREMicrosoftWindowsBlaBla2" />
  <RegQuery xmlns:xsi="http://www.w3.o....." xmlns:xsd="http://....." REGServer="localhost" REGHive="HKEY_LOCAL_MACHINE" REGSubKey="SOFTWAREMicrosoftWindowsBlaBla3" />
</DynamicResults>'
SELECT @x.value('count(/DynamicResults/RegQuery[@REGSubKey="SOFTWAREMicrosoftWindowsBlaBla"]/*)','INT')
GO
select *
from table
where XmlField.value('count(/DynamicResults/RegQuery[@REGSubKey="SOFTWAREMicrosoftWindowsBlaBla"]/*)','int')>0

最新更新