Welches Attribut oder Element möchten Sie aus <Location>
extrahieren Knoten?? Sie können nicht den gesamten XML-Knoten in einen bigint
konvertieren (wie es Ihre Abfrage versucht ...)
Versuchen Sie, <Location LaborHours="1.0">
zu extrahieren Wert??
Dann brauchen Sie:
;WITH XMLNAMESPACES(DEFAULT 'http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions')
SELECT
XC.value('@LaborHours', 'decimal(18,4)')
FROM
Production.ProductModel
CROSS APPLY
Instructions.nodes('/root/Location') AS XT(XC)
Zunächst einmal:da es mehrere gibt <Location>
Knoten in Ihrem XML müssen Sie CROSS APPLY
verwenden und die .nodes()
Funktion, um alle <Location>
abzurufen xml-Knoten.
Zweitens, da Sie das Attribut abrufen möchten LaborHours
(meine Annahme), Sie müssen den .value('@LaborHours
verwenden )` Ansatz.
Und schließlich, da diese Werte 1.0
sind oder 2.5
, müssen Sie decimal
verwenden (mit der richtigen Genauigkeit und Skalierung), um diese Werte zu erhalten - nicht bigint
....