8

XPath 1.0 には、SQL の "in" 演算子として機能する演算子がありますか?

select * from tbl_students where id in (1,2,3)
4

3 に答える 3

16

XPath 1.0 の = 演算子はそのように機能しますが、XPath 1.0 はシーケンスを記述するための構文を提供していません。したがって、次の形式の XML ドキュメントがある場合

<doc>
  <value>1</value>
  <value>2</value>
  <value>3</value>
</doc>

次に、式 likeはその要素 //doc[value = 2]を返します。doc

XPath 2.0 では、構文(1, 2, 3)は 3 つの整数のシーケンスを作成し、 のような条件を記述できます$i = (1, 2, 3)。ただし、リテラル シーケンスは XPath 1.0 の機能ではありません。XPath 式の片側で複数の値を取得する唯一の方法は、複数のノードに一致するパス式を使用することです。

于 2012-12-14T01:21:32.033 に答える
7

私は同じ問題を抱えていました。上記の答えは正しいです。より明確にするために、Xpath では次のようになります。

//*:document[*:documentType=("magazine","newspaper")]

これは次のものと同等です:

select * from documents where documenttype in ('newsletter','magazine')
于 2015-07-23T14:03:40.403 に答える