Where子句用于确定元素值是否在序列中(XQ)

时间:2016-04-29 02:38:16

标签: xquery

我试图从我们的XML本机db中提取一些数据,如果一个元素的值在包含的值序列中。不要以为我说得对。例如,

给出以下XML:

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

似乎应该有办法做一些事情(原谅语法,视为伪)

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

从我的所有搜索中,这似乎是不可能的。充其量,我得到了:

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

有更好的方法吗?

1 个答案:

答案 0 :(得分:5)

您只需使用=运算符:

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

=适用于类似 contains 的设定值,这正是您所需要的。将=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