Sua expressão XPath pode levar ao retorno de várias linhas, para cada linha na tabela do SQL Server. Você precisará usar um
CROSS APPLY
e uma chamada para .nodes()
para obter as informações que você procura: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)
Isso deve retornar todos os
JobCandidateID
valores e todos os nomes definidos no Resume
Coluna XML para cada linha na tabela. Se você puder ter certeza de que sempre haverá um único
<name>
tag em sua coluna XML, então você também pode encurtar isso para: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