【发布时间】:2021-04-13 01:43:59
【问题描述】:
我有一个包含 JSON 数据的 CLOB 列的 Orable 表。我需要一个在 CLOB 数据中搜索的查询。
我使用了条件where DBMS_LOB.instr(colName,'apple:')>0,它给出了具有apple: 的记录。但是,我需要查询返回包含任意数量的苹果的记录除了空白,这意味着 json apple 键应该有一个值。
我正在考虑类似where DBMS_LOB.instr(colName,'apple:**X**')>0 的东西,其中X 可以是任何不为空的数字。我试过regexp_instr,但这似乎不适合CLOB。
有没有办法解决这个问题?
【问题讨论】:
-
这是对关系数据库的误用。将 json 数据存储在 db 中非常好,但如果您需要能够在该 json 数据中进行搜索,您应该真正还提取您在插入/更新时关心的字段并提供真实的字段自己的列。
-
oracle 已内置支持查询 json。仔细阅读
-
... 从 Oracle 12.1 开始并在后续版本中得到改进。
-
如果您将 JSON 存储在 Oracle 数据库中,您必须告诉我们您的 Oracle 版本。新版本对 JSON 的支持非常强大,而旧版本(最高 11.2)则不支持。