0

我正在使用 Oracle Text 在我的 Web 应用程序中进行搜索。我已经通过创建数据存储和索引来配置 Oracle Text。

这是我的查询

select * from PROFILE where CONTAINS(FIRST_NAME,:firstName OR :secondName,1)>0;

每次我得到以下异常ORA-00907: missing right parenthesis.

但是在替换:firstName:secondName任何字符串之后它工作得很好。

它也可以与一个参数完美配合。
select * from PROFILE where contains(FIRST_NAME,:firstName,1)>0

上面的代码正在工作。但添加后OR :secondName,结果是ORA-00907

4

2 回答 2

1

Oracle Text 文档中,它似乎CONTAINS被定义为具有三个参数的常规函数​​(最后一个参数是可选的):

CONTAINS(
         [schema.]column,
         text_query    [VARCHAR2|CLOB]
         [,label       NUMBER])
RETURN NUMBER;

该参数是解释短语text_query的常规字符串。因此你应该写:

select * from PROFILE where contains(FIRST_NAME, :search_query, 1)>0

并将值绑定FOO OR BAR到变量search_query,因为OR在这种情况下关键字不是 SQL 查询的一部分。

于 2013-06-20T15:07:51.860 回答
0

你应该更好地使用

select * from PROFILE where CONTAINS(FIRST_NAME,:firstName ,1)>0  
OR CONTAINS(FIRST_NAME,:secondName,1)>0

于 2013-06-20T17:42:13.000 回答