sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server XQuery devuelve un error

Su expresión XPath podría hacer que se devolvieran varias filas, para cada fila en la tabla de SQL Server. Deberá usar una CROSS APPLY y una llamada a .nodes() para obtener la información que busca:

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)

Eso debería devolver todos los JobCandidateID valores y todos los nombres definidos en el Resume Columna XML para cada fila de la tabla.

Si puede estar seguro de que solo habrá un único <name> etiqueta en su columna XML, entonces también podría acortar esto a:

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