Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server XQuery renvoie une erreur

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