Oracle 包含不返回结果的查询



我有一个名为products的表,其中包含以下架构和数据:

|   product_id   |   name   |   description   |   price   |   location   |
|     NUMBER     | VARCHAR2 |       CLOB      |NUMBER(9,2)| SDO_GEOMETRY |
--------------------------------------------------------------------------
|      27        | Nexus 4  |  Android phone  |    160    |     null     |

当我发出SELECT * FROM products;查询时,我会取回数据。一切都很好。但是我希望能够在一个地方使用 CONTAINS() 获得结果,如下所示:

SELECT "PRODUCT_ID", "NAME", "DESCRIPTION", "PRICE"
FROM "PRODUCTS"
WHERE CONTAINS("NAME", 'nexus') > 0;

但是我没有得到任何结果。当我将nexus更改为NexusNexus 4时,也会发生同样的事情。我认为这可能与name是一个已解决的词有关,但同样的事情发生在description列上。

事实证明,这是因为我在同一个表上有两个文本索引,用于名称和描述。我删除了用于描述的那个,它起作用了。

如果您不使用混合/小写的表名和列名,则可以在查询中删除所有" 字符...

SELECT product_id, name, description, price FROM product WHERE CONTAINS(name, '%Nexus%') > 0;

最新更新