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 'https://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 ....