Welk attribuut of element wil je extraheren uit de <Location>
knooppunten?? U kunt niet het hele XML-knooppunt converteren naar een bigint
(zoals uw vraag probeert te doen....)
Probeert u de <Location LaborHours="1.0">
. te extraheren waarde??
Dan heb je nodig:
;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)
Allereerst:aangezien er meerdere . zijn <Location>
knooppunten in uw XML, moet u CROSS APPLY
. gebruiken en de .nodes()
functie om alle <Location>
. te krijgen xml-knooppunten.
Ten tweede, omdat u het attribuut . wilt ophalen LaborHours
(mijn aanname), je moet de .value('@LaborHours
. gebruiken) )` benadering.
En als laatste, aangezien die waarden 1.0
zijn of 2.5
, moet u decimal
. gebruiken (met de juiste precisie en schaal) om die waarden te krijgen - niet bigint
....