Qual atributo ou elemento você deseja extrair do
<Location>
nós?? Você não pode converter todo o nó XML em um bigint
(como sua consulta tenta fazer ....) Você tenta extrair o
<Location LaborHours="1.0">
valor?? Então você precisa:
;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)
Em primeiro lugar:uma vez que existem vários
<Location>
nós em seu XML, você deve usar CROSS APPLY
e o .nodes()
função para obter todos os <Location>
nós xml. Em segundo lugar, como você deseja recuperar o atributo
LaborHours
(minha suposição), você precisa usar o .value('@LaborHours
)`. E por último, como esses valores são
1.0
ou 2.5
, você deve usar decimal
(com precisão e escala adequadas) para obter esses valores - não bigint
....