2016-08-23 4 views
1

SQL Serverデータベーステーブルに格納されたXMLの属性を読み取る必要があります。 列にXMLデータ型があることを確認しました。xpathを使用してSQL ServerのXML要素の属性値をクエリする方法

このクエリを使用して属性を読み込みますが、結果は常にNULL値です。私は理由を知りません。私がここで見つけたすべての例は、私がそれを正確に行うことを確認しています。

SELECT 
    SDMPackageDigest.value('(//DesiredConfigurationDigest/SoftwareUpdateBundle/Annotation/DisplayName/@Text)[1]', 'NVARCHAR(256)') 
FROM 
    v_UpdateInfo 

以下は、私が扱っているXMLの抜粋です。

<DesiredConfigurationDigest xmlns="http://schemas.microsoft.com/SystemsCenterConfigurationManager/2009/07/10/DesiredConfiguration"> 
    <SoftwareUpdateBundle AuthoringScopeId="Site_28E438B4-CB2F-43A2-AD6B-5A993F805BCB" LogicalName="SUM_4ca07bc3-8c95-4644-be17-040a3964a02a" Version="201"> 
<Annotation xmlns="http://schemas.microsoft.com/SystemsCenterConfigurationManager/2009/06/14/Rules"> 
    <DisplayName Text="Security Update for Microsoft OneNote 2010 (KB3114885) 32-Bit Edition" /> 
    <Description Text="A security vulnerability exists in Microsoft OneNote 2010 32-Bit Edition that could allow arbitrary code to run when a maliciously modified file is opened. This update resolves that vulnerability." /> 
</Annotation> 
... 

答えて

1

あなたが尊重 XML名前空間に必要!

このような何かを試してみてください:

;WITH XMLNAMESPACES(DEFAULT 'http://schemas.microsoft.com/SystemsCenterConfigurationManager/2009/07/10/DesiredConfiguration', 
          'http://schemas.microsoft.com/SystemsCenterConfigurationManager/2009/06/14/Rules' AS ns) 
SELECT 
    SDMPackageDigest.value('(/DesiredConfigurationDigest/SoftwareUpdateBundle/ns:Annotation/ns:DisplayName/@Text)[1]', 'NVARCHAR(256)') 
FROM 
    v_UpdateInfo 
+1

を利用する方法がわからないありがとうそれは動作し、私は私がそれを使用することができるだろうか参照してください。。その他のXMLコンテンツ – Monkeynaut

0
SELECT @x.value('(/*:DesiredConfigurationDigest/*:SoftwareUpdateBundle/*:Annotation/*:DisplayName/@Text)[1]', 'NVARCHAR(256)') 
+0

おかげで、私はこの:( – Monkeynaut

関連する問題