Ist COLUMN[1]/@value
es möglich, den Spaltenwert abzurufen, anstatt den folgenden Elementindex zu verwenden , indem Sie einen Attributnamen wie den folgenden angeben : COLUMN[@name=”Prod_ID”]/@value
?
Als ich es versuchte, bekam ich diesen Fehler:
Nachricht 2389, Ebene 16, Status 1, Zeile 41
XQuery [Wert ()]: 'Wert ()' erfordert einen Singleton (oder eine leere Sequenz), gefundener Operand vom Typ 'xdt: untypedAtomic *'
Mein Code:
DECLARE @xml AS XML = '<DATA>
<ROW RowNumber="1">
<COLUMN Name="ProdID" Value="1234" />
<COLUMN Name="AppID" Value="20144" />
<COLUMN Name="ConsentDesc" Value="My Description" />
<COLUMN Name="ConsentVer" Value="" />
<COLUMN Name="ConsentAcceptance" Value="6789" />
<COLUMN Name="ConsentType" Value="TermsAndConditions" />
<COLUMN Name="CreatedDate" Value="8/22/2014 3:04:29 PM" />
</ROW>
</DATA>'
SELECT
m.c.value('@RowNumber', 'varchar(50)') AS RowNumber ,
m.c.value('COLUMN[1]/@Value', 'varchar(50)') AS [ProdID] ,
m.c.value('COLUMN[2]/@Value', 'varchar(50)') AS [AppID] ,
m.c.value('COLUMN[3]/@Value', 'varchar(50)') AS [ConsentDesc.] ,
m.c.value('COLUMN[4]/@Value', 'varchar(50)') AS [ConsentVer.] ,
m.c.value('COLUMN[5]/@Value', 'varchar(50)') AS [ConsentAcceptance] ,
m.c.value('COLUMN[6]/@Value', 'varchar(50)') AS [ConsentType] ,
m.c.value('COLUMN[7]/@Value', 'varchar(50)') AS [CreatedDate]
FROM
@xml.nodes('DATA/ROW') AS m ( c )