sql >> Database >  >> RDS >> Sqlserver

xquery value() methode werkt niet en geeft fout

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 ....




  1. Hoe combineer ik zowel mijn top 5-salarissen als mijn onderste 5 om in Oracle weer te geven?

  2. MySQL Een lijst met waarden opvragen

  3. MySQL Hash-indexen voor optimalisatie

  4. kan mysql db-tabel niet toevoegen in vb-gegevensbron