2015-01-21 2 views
-9

XML 데이터 필드에서 요소 값을 검색하려고합니다. 자세한 내용에 대한 코드 아래에서 확인하십시오 :XML 데이터 유형 필드에서 요소 값 가져 오기

SQL 스크립트 :

CREATE TABLE #Temp1 (ConfigXSLT XML); 

INSERT INTO #Temp1 VALUES('<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes" /> 
    <xsl:variable name="transport"> 
    <transport protocol="FILE" direction="get" filename="file1*.csv" /> 
    </xsl:variable> 
    <xsl:template match="@* | node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@* | node()" /> 
    </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet>') 

-- I want only filename element value 'file1*.csv' in select statement 

-- I have tried with below query but it not works 
SELECT ConfigXSLT.value('declare namespace PD="http://www.w3.org/1999/XSL/Transform"; (//PD:variable/PD:transport/PD:filename)[1]','VARCHAR(MAX)') 
FROM #Temp1 

DROP TABLE #Temp1 

답변

3

당신은 (? PD가 BTW 이유), "전송"telement 네임 스페이스없이 PD 네임 스페이스를 사용하여 바다로 갔다. 또한, 선택이 시도는 속성 이름 :

전에 기호 @ 사용 속성 :

SELECT ConfigXSLT.value('declare namespace PD="http://www.w3.org/1999/XSL/Transform"; (//PD:variable/transport/@filename)[1]','VARCHAR(MAX)') 
FROM #Temp1 

결과 : 그런

file1*.csv 
0
select @xml.value('(/stylesheet/variable/transport/@filename)[1]', 'nvarchar(max)') 

아마 뭔가?

+0

나는 이것을 시도했지만 작동하지 않습니다. 이 코드는 스타일 시트 xml을 작동하지 않습니다. –