ठीक है, यहाँ आपका XPath व्यंजक "अपराधी" है:
query('//branch')
यह कहता है:सभी . चुनें <branch>
पूरे दस्तावेज़ से नोड्स। यह वही कर रहा है जो आप इसे करने के लिए कह रहे हैं, वास्तव में....
यहाँ इस क्वेरी में क्या गलत है??
SELECT
XMLData.query('/library/books/book[@type=sql:variable("@genre")]//branch')
FROM dbo.TableA
यह सभी <branch>
. को पुनः प्राप्त करेगा <book>
. के लिए सबनोड्स नोड जिसमें type="SF"
. है एक विशेषता के रूप में....
आप अपने query()
. के साथ क्या हासिल करने की कोशिश कर रहे हैं? , exist()
और value()
सभी एक ही बयान में ?? बहुत संभव है, इसे बहुत आसान तरीके से किया जा सकता है....
साथ ही:मुझे लगता है कि आप गलत व्याख्या कर रहे हैं कि .exist()
SQL सर्वर में XQuery करता है। अगर आपका बयान यहां है:
SELECT (some columns)
FROM dbo.TableA
WHERE XMLData.exist('//book[@type = sql:variable("@genre")]') = 1
आप मूल रूप से SQL सर्वर को dbo.TableA
. से सभी पंक्तियों को पुनः प्राप्त करने के लिए कह रहे हैं जहां XML XMLData
. में संग्रहीत है इसमें एक <book type=.....>
. है नोड - आप तालिका से पंक्तियों का चयन कर रहे हैं - नहीं XMLData
में चयन लागू करना कॉलम की सामग्री...