Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie kann man XML-Werte und -Attribute aus einer Tabelle in SQL Server abfragen?

Eigentlich sind Sie Ihrem Ziel nahe, Sie müssen nur die Methode nodes() verwenden, um Ihre Zeilen aufzuteilen und dann Werte zu erhalten:

select
    s.SqmId,
    m.c.value('@id', 'varchar(max)') as id,
    m.c.value('@type', 'varchar(max)') as type,
    m.c.value('@unit', 'varchar(max)') as unit,
    m.c.value('@sum', 'varchar(max)') as [sum],
    m.c.value('@count', 'varchar(max)') as [count],
    m.c.value('@minValue', 'varchar(max)') as minValue,
    m.c.value('@maxValue', 'varchar(max)') as maxValue,
    m.c.value('.', 'nvarchar(max)') as Value,
    m.c.value('(text())[1]', 'nvarchar(max)') as Value2
from sqm as s
    outer apply s.data.nodes('Sqm/Metrics/Metric') as m(c)

SQL-Fiddle-Demo