Quel attribut ou élément voulez-vous extraire du <Location>
noeuds ? ? Vous ne pouvez pas convertir l'intégralité du nœud XML en un bigint
(comme votre requête tente de le faire....)
Essayez-vous d'extraire le <Location LaborHours="1.0">
valeur ??
Ensuite, vous avez besoin :
;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)
Tout d'abord :puisqu'il existe plusieurs <Location>
nœuds dans votre XML, vous devez utiliser CROSS APPLY
et le .nodes()
fonction pour obtenir tous les <Location>
nœuds xml.
Deuxièmement, puisque vous souhaitez récupérer l'attribut LaborHours
(mon hypothèse), vous devez utiliser le .value('@LaborHours
)` approche.
Et enfin, puisque ces valeurs sont 1.0
ou 2.5
, vous devez utiliser decimal
(avec une précision et une échelle appropriées) pour obtenir ces valeurs - pas bigint
....