Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server XQuery връща грешка

Вашият XPath израз може да доведе до връщане на множество редове за всеки ред в таблицата на SQL Server. Ще трябва да използвате CROSS APPLY и извикване на .nodes() за да получите тази информация, която търсите:

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)

Това трябва да върне всички JobCandidateID стойности и всички собствени имена, дефинирани в Резюме XML колона за всеки ред в таблицата.

Ако можете да сте сигурни, че някога ще има само един <име> във вашата XML колона, тогава можете също да съкратите това до:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Delphi - BOF или EOF е True, или текущият запис е изтрит

  2. Как да изпълним .sql файл с помощта на powershell?

  3. R DBI ODBC грешка:nanodbc/nanodbc.cpp:3110:07009:[Microsoft][ODBC драйвер 13 за SQL Server]Невалиден индекс на дескриптор

  4. Linq избира диапазон от записи

  5. Конкатни групи в SQL Server