对jcrBrowser的sql查询中的运算符IN不起作用

时间:2014-05-31 07:59:12

标签: sql magnolia

我的jcrBrowser中有以下结构

enter image description here

我想选择所有具有“businessGroups”属性的节点,并且其值等于这些数字中的一些 - 12,10,1。请参阅下面的查询

select * from nt:base where jcr:primaryType='mgnl:component' and businessGroups IN ('10', '12', '1')

但是这个查询不起作用,我收到一个错误:

Encountered "IN" at line 1, column 81.
Was expecting one of:
    "IS" ...
    "NOT" ...
    "LIKE" ...
    "BETWEEN" ...
    "(" ...
    "." ...
    "<" ...
    "=" ...
    ">" ...
    "<>" ...
    ">=" ...
    "<=" ...

那么问题是什么?我的查询的语法是不正确的还是运算符IN的问题? 顺便说一下,如果我改变我的查询

select * from nt:base where jcr:primaryType='mgnl:component' and businessGroups = '1'

一切正常

1 个答案:

答案 0 :(得分:0)

不是真正的Magnolia特定问题,更多JCR具体问题。

答案很简单,JCR搜索不是完整的SQL,而是SQL指令的一个子集。 JCR提供的是类似SQL的搜索功能。并且&#39; IN&#39;根本不受支持。有关SQL语法,请参阅JCR specification(这是您在上面的查询中使用的语法)。

还有JCR 2.0规范,它定义了更高级的SQL-2 syntax。您可能想切换到那个。或者您可以使用也支持搜索的xPath。

HTH, 扬