2017-01-23 1 views
1

Ich versuche Wert eines Attributs von XML in SQL-Tabelle zu erhaltenDrucken XML-Attribut in SQL Server

<?xml version="1.0" encoding="utf-8"?> 
<container> 
    <Property Name="paramA" Vocabulary="someVocu"> 
    <Property Name="paramB" Value="valueA" /> 
    <Property Name="paramC" Value="valueB" /> 
    </Property> 
    <Property Name="paramA" Vocabulary="anotherVocu"> 
    <Property Name="paramB" Value="valueY" /> 
    <Property Name="paramC" Value="valueZ" /> 
    </Property> 
</container> 


select x.XmlCol.value('(Property[@Name="paramB"]/@Value)[1]', 'varchar(50)') from tempTbl CROSS APPLY rawxml.nodes('/container') AS x(XmlCol) 

Ich versuche, „WertA“ und „valueY“ Ich erhalte eine NULL zu drucken.

Wie kann ich das tun? Auch

Dank

Antwort

0

Ich kann Ihnen nicht sagen, was insbesondere mit Ihrer Aussage falsch ist, da ich immer noch lernen, wie man XML abfragen. Ich konnte mit einigen SQL kommen, die ich denke, sollte durch Bezugnahme auf diese Frage für Arbeit ...

How to query for Xml values and attributes from table in SQL Server?

Hier ist sie.

CREATE TABLE tempTbl 
(
    id INT, 
    data XML 
) 

INSERT INTO dbo.tempTbl 
     (id, data) 
SELECT 1, '<?xml version="1.0" encoding="utf-8"?> 
<container> 
    <Property Name="paramA" Vocabulary="someVocu"> 
    <Property Name="paramB" Value="valueA" /> 
    <Property Name="paramC" Value="valueB" /> 
    </Property> 
    <Property Name="paramA" Vocabulary="anotherVocu"> 
    <Property Name="paramB" Value="valueY" /> 
    <Property Name="paramC" Value="valueZ" /> 
    </Property> 
</container>' 

SELECT 
x.XmlCol.value('@Value', 'varchar(25)') AS Value 
FROM tempTbl AS t 
CROSS APPLY t.data.nodes('/container/Property/Property') AS x(XmlCol) 
WHERE x.XmlCol.value('@Name', 'varchar(25)') = 'paramB' 

Um mehr über das Abfragen von XML zu erfahren, arbeite ich durch Stairway to XML.

Noel