Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server XQuery mengembalikan kesalahan

Ekspresi XPath Anda dapat menyebabkan beberapa baris dikembalikan, untuk setiap baris dalam tabel SQL Server. Anda harus menggunakan CROSS APPLY dan panggilan ke .nodes() untuk mendapatkan informasi yang Anda cari:

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)

Itu akan mengembalikan semua JobCandidateID nilai dan semua nama depan yang didefinisikan dalam Resume Kolom XML untuk setiap baris dalam tabel.

Jika Anda yakin bahwa hanya akan ada satu <name> tag di kolom XML Anda, lalu Anda juga dapat mempersingkatnya menjadi:

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. Menghapus kolom di MS SQL Server

  2. Apa yang dilakukan oleh pilih 1?

  3. Cara Memperbaiki "Daftar pilih untuk pernyataan INSERT berisi lebih sedikit item daripada daftar sisipan"

  4. SQL DELETE dengan INNER JOIN

  5. Cara memilih satu catatan di gabungan kiri