मैं कुछ एसक्यूएल सर्वर में exist()
और value()
तरीकों 2008एसक्यूएल सर्वर एक्सएमएल मौजूद हैं()
मेरे एक्सएमएल इस तरह दिखता है का उपयोग कर समस्या है:
<?xml version="1.0" encoding="UTF-8"?>
<library>
<branches>
<branch>
<codelib>1</codelib>
<name>Campus</name>
</branch>
<branch>
<codelib>2</codelib>
<name>47th</name>
</branch>
<branch>
<codelib>3</codelib>
<name>Mall</name>
</branch>
</branches>
<books>
<book type="SF">
<codb>11</codb>
<title>Robots</title>
<authors>
<author>author1 robots</author>
<author>author2 robots</author>
</authors>
<price>10</price>
<stocks>
<branch codelib="1" amount="10"/>
<branch codelib="2" amount="5"/>
<branch codelib="4" amount="15"/>
</stocks>
<from>20</from>
<to>30</to>
</book>
<book type="poetry">
<codb>12</codb>
<title>Poetry book</title>
<authors>
<author>AuthorPoetry</author>
</authors>
<price>14</price>
<stocks>
<branch codelib="1" amount="7"/>
<branch codelib="2" amount="5"/>
</stocks>
<from>25</from>
<to>40</to>
</book>
<book type="children">
<codb>19</codb>
<title>Faitytales</title>
<authors>
<author>AuthorChildren</author>
</authors>
<price>20</price>
<stocks>
<branch codelib="1" amount="10"/>
<branch codelib="3" amount="55"/>
<branch codelib="4" amount="15"/>
</stocks>
<from>70</from>
<to>75</to>
</book>
<book type="literature">
<codb>19</codb>
<title>T</title>
<authors>
<author>A</author>
</authors>
<price>17</price>
<stocks>
<branch codelib="1" amount="40"/>
</stocks>
<from>85</from>
<to>110</to>
</book>
</books>
</library>
इस एक्सएमएल देखते हुए, मैं एक लिखने के लिए है SELECT
खंड जो query()
, value()
और exist()
प्रत्येक बार 2 बार उपयोग करेगा। मैं और exist()
का उपयोग SELECT
में भी नहीं कर सकता, क्योंकि ऐसा लगता है कि WHERE
खंड का कोई प्रभाव नहीं पड़ता है।
उदाहरण के लिए, मैं सभी <branch>
तत्वों है कि प्रकार SF
के साथ पुस्तक के बच्चे हैं प्राप्त करना चाहते हैं, लेकिन चुनिंदा बयान
declare @genre varchar(15)
set @genre = 'SF'
SELECT XMLData.query('//branch') from TableA
WHERE XMLData.exist('//book[./@type = sql:variable("@genre")]') = 1
सभी <branch>
तत्वों, लक्षित से न सिर्फ लोगों को पुन: प्राप्त किताब। मैं यह नहीं समझ सकता कि मेरे चयन में क्या गलत है। इसके अलावा, मैं query()
, exist()
और value()
एक ही चयन में (? यह संभव एसक्यूएल एक्सएमएल में चुनिंदा बयान नेस्ट की है, है)
ऐसा नहीं है कि मैं चाहता हूं, लेकिन मुझे एक ही कथन में क्वेरी(), मान() और मौजूद() दोनों का उपयोग करना होगा। यही कारण है कि मैं टी-एसक्यूएल में कुछ प्रकार की फ़िल्टरिंग करना चाहता हूं, चुनें ... कहां ... अगर संभव हो तो नेस्टेड SELECT स्टेटमेंट की तरह कुछ हो सकता है। मैं सिर्फ – joanna