私は、SQL Serverのexist()
とvalue()
方法2008SQL ServerのXML(存在)
を使用して、いくつかの問題を抱えている私のXMLは次のようになります。このXMLを考える
<?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回使用します。 WHERE
句は何の効果もないように見えるので、同じSELECT
にquery()
とexist()
を使用することすらできません。
例えば、私はタイプSF
と書籍の子であるすべての<branch>
の要素を取得したいのですが、
declare @genre varchar(15)
set @genre = 'SF'
SELECT XMLData.query('//branch') from TableA
WHERE XMLData.exist('//book[./@type = sql:variable("@genre")]') = 1
はすべて<branch>
要素、対象からのものだけでなくを取得するselect文本。私は自分の選択に何が間違っているのか理解できません。また、私は(SQL、XMLでSELECT文を入れ子にしていると、それも可能でしょうか?)同じ選択にquery()
、exist()
とvalue()
の小さな例をいただければ幸いです
私は欲しいものではありませんが、同じ文でquery()、value()、exist()の両方を使用する必要があります。そのため、T-SQL、SELECT ...のようなフィルタリングをしたいのですが... WHERE ...可能な場合は、ネストされたSELECT文のようなものかもしれません。私はちょうどそのようなsmthを達成する方法の例をしたい – joanna