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