sql >> Database teknologi >  >> RDS >> Sqlserver

xquery value()-metoden virker ikke og giver fejl

Hvilken attribut eller element vil du udtrække fra noder?? Du kan ikke konvertere hele XML-noden til en bigint (som din forespørgsel forsøger at gøre...)

Prøver du at udtrække værdi?

Så skal du bruge:

;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)

Først og fremmest:da der er flere noder i din XML, skal du bruge CROSS APPLY og .nodes() funktion for at få alle xml-noder.

For det andet, da du vil hente attributten Arbejdstimer (min antagelse), skal du bruge .value('@LaborHours )` tilgang.

Og endelig, da disse værdier er 1.0 eller 2.5 , skal du bruge decimal (med korrekt præcision og skala) for at få disse værdier - ikke bigint ....




  1. Hvordan du selektivt dumper alle innodb-tabeller i en mysql-database?

  2. skabe orakelvisning baseret på sammenligning af data mellem to databasetabeller

  3. Indsæt array i MySQL-database med PHP

  4. Sådan bruges HAVING og ORDER BY-klausulen i sql