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

SQL Server XML ada()

Nah, ekspresi XPath Anda di sini adalah "pelakunya":

query('//branch')

Ini mengatakan:pilih semua <branch> node dari seluruh dokumen. Itu hanya melakukan apa yang Anda perintahkan, sungguh....

Apa yang salah dengan kueri ini di sini??

SELECT 
    XMLData.query('/library/books/book[@type=sql:variable("@genre")]//branch')
FROM dbo.TableA

Itu akan mengambil semua <branch> subnode untuk <book> simpul yang memiliki type="SF" sebagai atribut....

Apa yang ingin Anda capai dengan query() , exist() dan value() semua dalam pernyataan yang sama?? Sangat mungkin, itu bisa dilakukan dengan lebih mudah....

Juga:Saya pikir Anda salah mengartikan apa .exist() di SQL Server XQuery tidak. Jika Anda memiliki pernyataan Anda di sini:

 SELECT (some columns)
 FROM dbo.TableA
 WHERE XMLData.exist('//book[@type = sql:variable("@genre")]') = 1

Anda pada dasarnya memberi tahu SQL Server untuk mengambil semua baris dari dbo.TableA tempat XML disimpan di XMLData berisi <book type=.....> simpul - Anda memilih baris dari tabel - TIDAK menerapkan pilihan ke XMLData isi kolom...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana mengurutkan agar seperti yang dimasukkan dalam SQL Server?

  2. Klausa WHERE untuk menemukan semua catatan dalam bulan tertentu

  3. SQL Server:Ganti karakter XML yang tidak valid dari bidang VARCHAR(MAX)

  4. Memecahkan Masalah Kemacetan I/O Disk

  5. Bagaimana cara mengetahui kesalahan _exact_ dari SQL Server