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

特定のレジストリキーのサブノードの数を返す例を次に示します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 に答える