sql >> Databáze >  >> RDS >> Sqlserver

SQL Server XQuery vrací chybu

Váš výraz XPath by mohl vést k vrácení více řádků pro každý řádek v tabulce serveru SQL. Budete muset použít CROSS APPLY a volání .nodes() k získání informací, které hledáte:

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)

To by mělo vrátit všechny JobCandidateID hodnoty a všechna křestní jména definovaná v Resume XML sloupec pro každý řádek v tabulce.

Pokud si můžete být jisti, že vždy bude existovat pouze jeden <name> ve sloupci XML, můžete to také zkrátit na:

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



  1. Použití funkcí více oken na stejném oddílu

  2. Jak exportovat databázi pomocí phpMyAdmin

  3. T-SQL poddotaz Max (datum) a spojení

  4. Dotazování sloupce clob oracle