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

SQL Server XQuery restituisce un errore

L'espressione XPath potrebbe comportare la restituzione di più righe, per ogni riga nella tabella di SQL Server. Dovrai utilizzare un CROSS APPLY e una chiamata a .nodes() per ottenere le informazioni che cerchi:

WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume' AS ns)
SELECT 
    JobCandidateID,
    ResNames.value('(ns:Name.First)[1]', 'nvarchar(100)')
FROM   
    HumanResources.JobCandidate
CROSS APPLY
    [Resume].nodes('/ns:Resume/ns:Name') AS XTbl(ResNames)

Questo dovrebbe restituire tutti i JobCandidateID valori e tutti i nomi definiti nel Resume Colonna XML per ogni riga della tabella.

Se puoi essere sicuro che ci sarà un solo <name> tag nella tua colonna XML, puoi anche abbreviarlo in:

WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume' AS ns)
SELECT 
    JobCandidateID,
    [Resume].value('(/ns:Resume/ns:Name/ns:Name.First)[1]', 'nvarchar(100)')
FROM   
    HumanResources.JobCandidate