在 Oracle Apex SQL 命令中将 RTL 与 SQL 语句一起使用

Using RTL with SQL statement in Oracle Apex SQL Commands

尝试在 Oracle Apex 中写入 WHERE CONTAINS 时 SQL 命令:

  WHERE CONTAINS (CAR, 'السيارة البيضاء OR السيارة السوداء', 1) > 0;

我收到以下错误:

Error at line 26/33: ORA-00904: "السيارة البيضاء OR السيارة السوداء": invalid identifier

如果不使用 RTL,它将如下所示并且有效:

 WHERE CONTAINS (CAR, 'WHITE CARE OR BLACK CAR', 1) > 0;

感谢您的帮助

您可以使用:

SELECT *
FROM   cars
WHERE  CONTAINS (CAR, 'السيارة البيضاء OR السيارة السوداء', 1) > 0;

注意:这是 WHERE CONTAINS(car, 'text1 OR text2', 1) > 0 格式,但 RTL 格式使它看起来格式不正确。

其中,对于示例数据:

CREATE TABLE cars ( car ) AS
SELECT 'abc السيارة البيضاء def' FROM DUAL UNION ALL
SELECT 'ghi السيارة السوداء jkl' FROM DUAL UNION ALL
SELECT 'mno pqr' FROM DUAL;

CREATE INDEX cars__car__textidx ON cars(car) INDEXTYPE IS CTXSYS.CONTEXT;

输出:

CAR
abc السيارة البيضاء def
ghi السيارة السوداء jkl

db<>fiddle here