2016-04-29 7 views
2

XMLネイティブのデータベースからデータを取り出そうとしていますが、ある要素の値が値のシーケンスに含まれているとします。私はその権利を言いましたとは思わないでください。 、要素の値がシーケンス(XQ)にあるかどうかを判断する句

<root> 
    <a>1</a> 
<root> 

は私の検索の全てから

where root/a in (1,2,3,4) 

(言い訳構文、擬似として扱う)ような何かを行う方法があるはずらしい:たとえば、

は、次のXMLを考えますそれは可能ではないようです。最高で、私は得ました:

where root/a = 1 or root/1 = 2 or root/a = 3 etc 

これを行うには良い方法がありますか?

where root/a = (1,2,3,4) 

=に似た設定値に作品が含まれている、あなたが正確に必要なものです:

答えて

5

あなたは、単に=演算子を使用することができます。コントラスト=eqは、比較のために原子値が必要です。


以下は完全な例です。

XML:

<root> 
    <parent> 
     <a>1</a> 
    </parent> 
    <parent> 
     <a>4</a> 
    </parent> 
    <parent> 
     <a>10</a> 
    </parent> 
</root> 

のXQuery:

for $p in /root/parent 
where $p/a = (1,2,3,4) 
return $p 

出力:

<parent> 
    <a>1</a> 
</parent> 
<parent> 
    <a>4</a> 
</parent> 

デモ:xpathtester

+2

ああ私の善良さ本当に! 私にお試しさせてください... – tenwest

+0

うわー、魅力的なハハのように動作します。ありがとうございます – tenwest

+1

+1 FYI - @tenwest FLWORの 'where'式から述語にフィルタリングを移動し、この(等価で短い)XPath式を持つ親要素を選択することもできます:'/root/parent [a = (1,2,3,4)] ' –

関連する問題