cx_Oracle使用'LIKE'查询JSON CLOB

时间:2018-07-05 13:57:21

标签: oracle cx-oracle

我正在CLOB中探索cx_Oracle的JSON功能。我在桌子上有一个索引,可以查询直接相等性

SELECT * FROM mytable m WHERE m.jsonclob.jsonattribute = 'foo';

我希望能够使用LIKE语句执行相同的操作。

SELECT * FROM mytable m WHERE m.jsonclob.jsonattribute LIKE 'foo.%';

1 个答案:

答案 0 :(得分:0)

这对我适用于Oracle DB 12.2:

SQL> CREATE TABLE j_purchaseorder_b (po_document CLOB CHECK (po_document IS JSON)) LOB (po_document) STORE AS (CACHE);

Table created.

SQL> INSERT INTO j_purchaseorder_b VALUES ('{"userId":2,"userName":"Bob","location":"USA"}');

1 row created.

SQL> SELECT pob.po_document.location FROM j_purchaseorder_b pob where pob.po_document.location LIKE 'US%';

LOCATION
--------------------------------------------------------------------------------
USA

有关参考,请查看Oracle JSON手册章节Query JSON Data.

一个旁注:出于性能原因,JSON团队喜欢推荐BLOB进行存储。检查文档等,等等。