【问题标题】:Need to fetch a value from JSON stored in a CLOB in Oracle 11g需要从存储在 Oracle 11g 中的 CLOB 中的 JSON 中获取值
【发布时间】:2019-12-25 10:16:10
【问题描述】:

我需要从 CLOB 中的 JSON 中获取 patientInfo 属性。在某些情况下,patientInfo 可以为空。是否有任何正则表达式模式可以从 CLOB 中获取属性 patientInfo

{
   "id":"12",
   "name":"xx",
   "patientInfo":[
      {
         "id":"1",
         "name":"yy"
      },
      {
         "id":"2",
         "name":"zz"
      }
   ]
}

【问题讨论】:

  • “原始”适用于何处?您可以使用the PL/JSON library - 大概这不是您需要做的唯一 JSON 操作吗?
  • 到目前为止,我们正在获取整个 CLOB 并在 JAVA 级别进行一些验证,如果我在 Query 部分(即仅获取 patientinfo 属性)会更好

标签: sql json regex oracle oracle11g


【解决方案1】:

在 Oracle 12c 中,您可以使用 JSON_QUERY 从 JSON 中提取一些值,
下面是一个非常简单的例子:

create table ttt(
  my_json clob
);

insert into ttt( my_json ) values(
q'[{
   "id":"12",
   "name":"xx",
   "patientInfo":[
      {
         "id":"1",
         "name":"yy"
      },
      {
         "id":"2",
         "name":"zz"
      }
   ]
}]'
);

commit;

现在:

select json_query(my_json, '$.patientInfo') as result
from ttt

给出这个结果:

RESULT  
-----------------------------------------------
[{"id":"1","name":"yy"},{"id":"2","name":"zz"}]

【讨论】:

  • 不确定这是否真的有助于解决有关 11g 的问题... *8-)
猜你喜欢
  • 1970-01-01
  • 2022-01-02
  • 2017-10-09
  • 2014-06-18
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2020-11-15
  • 2016-12-11
相关资源
最近更新 更多