在CLOB中分别获取json数据,pl/sql
Get json data separately in CLOB, pl/sql
我在 pl/sql 中有 CLOB 数据格式的 json 对象,现在我需要将每个数据字段从 json 对象单独获取到 varchar 变量。不使用 pljson.
如果您最多使用 11 个 Oracle,最简单的方法是使用第 3 方库。对我来说一个好的库是 pljson,它可以处理 CLOB,但也许还有其他库。
使用 Oracle 12c,您可以通过 SQL 本地解析 JSON;这是 12c 的重要新功能之一。
更新:
一个非常简单粗暴的方法是使用 regexp_substr 函数从 CLOB/VARCHAR2 中提取专用密钥,如下所示:
REGEXP_SUBSTR(T.JOSN_CLOB, '\s*"*(key1)"*\s*:\s*"(.*)"', 1, 1, 'im', 2)
其中 key1 是您对 clob 感兴趣的键。这可能不是很快,正则表达式可以更专业,但您可以提取简单的值。
另一种方法是通过 APEX SQL Workshop 安装来检查 pljson 包并重命名导致问题的部分,或者使用适当的 JSON 库编写 JAVA 存储的 procedure/function并通过 PL/SQL 或 SQL.
中的包装函数调用此函数
我在 pl/sql 中有 CLOB 数据格式的 json 对象,现在我需要将每个数据字段从 json 对象单独获取到 varchar 变量。不使用 pljson.
如果您最多使用 11 个 Oracle,最简单的方法是使用第 3 方库。对我来说一个好的库是 pljson,它可以处理 CLOB,但也许还有其他库。
使用 Oracle 12c,您可以通过 SQL 本地解析 JSON;这是 12c 的重要新功能之一。
更新:
一个非常简单粗暴的方法是使用 regexp_substr 函数从 CLOB/VARCHAR2 中提取专用密钥,如下所示:
REGEXP_SUBSTR(T.JOSN_CLOB, '\s*"*(key1)"*\s*:\s*"(.*)"', 1, 1, 'im', 2)
其中 key1 是您对 clob 感兴趣的键。这可能不是很快,正则表达式可以更专业,但您可以提取简单的值。
另一种方法是通过 APEX SQL Workshop 安装来检查 pljson 包并重命名导致问题的部分,或者使用适当的 JSON 库编写 JAVA 存储的 procedure/function并通过 PL/SQL 或 SQL.