2012-08-29 5 views
0

어쩌면 일부는 나를 도울 수있다, 나는 XML 컬럼이있는 nRows가있는 sql 테이블을 가지고있다. XML 구조는 다음과 같습니다TSQL - 쿼리 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로 조회 할 수있는 방법, 내가 속성에 지정된 값과/DynamicResults/RegQuery가 'REGSubKey'하위 노드가 있는지 알고 싶습니다 ...

덕분에 많은

+0

@podiluska이 ... SOFTWARE\Microsoft\Windows\BlaBla 키 특정 등록에 대한 하위 노드의 수를 반환하는 예제이다 - 하지만 이것에 대해서는 또 하나의 문제가 있습니다. 어떻게하면 붙여 넣기 위해 선언 된 값을 사용할 수 있습니까? 왜냐하면 : '... [@ RegSubKey ='+ myDeclaredVarcharWithQuotationMarks + ']/*', 'int'...... 작동하지 않습니다. – Cadburry

+0

'sql : 변수 (yourvariablename)' – podiluska

+0

@podiluska sql : variable ("@ yourvariablename")이 나를 위해 일했습니다 - 감사합니다 !! – Cadburry

답변

0
select * 
from table 
where XmlField.value('count(/DynamicResults/RegQuery[@REGSubKey="SOFTWARE\Microsoft\Windows\BlaBla"]/*)','int')>0 
2

나는 일반적으로이 작업을 수행하는 방법을 사용하는 것입니다 내장 된 XML 기능 (당신은 SQL 서버 2005 이상을 사용하는 경우). 이 MSDN 페이지

체크 아웃 : - 솔루션 주셔서 감사합니다 여기 http://msdn.microsoft.com/en-us/library/ms178030

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