cx_Oracle запрос JSON CLOB с «LIKE» - PullRequest
0 голосов
/ 05 июля 2018

Я изучаю возможности JSON cx_Oracle в CLOB. У меня есть индекс в таблице, который позволяет мне запросить прямое равенство

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

Я бы хотел сделать то же самое с оператором LIKE.

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

1 Ответ

0 голосов
/ 06 июля 2018

Это работает для меня с 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 Запрос данных JSON.

Примечание: команда JSON рекомендует использовать BLOB для хранения из соображений производительности. Проверьте документ и т. Д. И т. Д.

...