Votre expression XPath peut entraîner le renvoi de plusieurs lignes, pour chaque ligne de la table SQL Server. Vous devrez utiliser un CROSS APPLY
et un appel à .nodes()
pour obtenir les informations que vous recherchez :
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)
Cela devrait renvoyer tous les JobCandidateID
valeurs et tous les prénoms définis dans le Resume
Colonne XML pour chaque ligne du tableau.
Si vous pouvez être sûr qu'il n'y aura jamais qu'un seul <name>
balise dans votre colonne XML, vous pouvez également la raccourcir en :
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