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