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...