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