sql >> Databasteknik >  >> RDS >> Sqlserver

xquery value()-metoden fungerar inte och ger ett fel

Vilket attribut eller element vill du extrahera från knutpunkter?? Du kan inte konvertera hela XML-noden till en bigint (som din fråga försöker göra...)

Försöker du extrahera värde??

Då behöver du:

;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 och främst:eftersom det finns flera noder i din XML, måste du använda CROSS APPLY och .nodes() funktion för att få alla xml-noder.

För det andra, eftersom du vill hämta attributet LaborHours (mitt antagande), måste du använda .value('@LaborHours )` tillvägagångssätt.

Och slutligen, eftersom dessa värden är 1.0 eller 2.5 måste du använda decimal (med rätt precision och skala) för att få dessa värden - inte bigint ....




  1. Hur får man första och sista posten från en sql-fråga?

  2. Distribuerad transaktion på länkad server mellan sql-server och mysql

  3. Korrekt escape av avgränsade identifierare i SQL Server utan att använda QUOTENAME

  4. Vad gör Statement.setFetchSize(nSize)-metoden egentligen i SQL Server JDBC-drivrutinen?