【发布时间】:2023-02-17 01:36:45
【问题描述】:
由于 oracle 不支持将 JSON 列键动态转换为关系列和将 JSON 列值动态转换为关系列值,我曾想过将我的动态列列表生成为 CLOB 列
col_a,col_b,col_c,col_d
然后转换成下面的形式
col_a NUMBER(22,3) PATH '$.col_a',col_b NUMBER(22,3) PATH '$.col_b',col_c NUMBER(22,3) PATH '$.col_c',col_d NUMBER(22,3) PATH '$.col_d'
基本上我的每个列“col_a”都转换为“col_a NUMBER(22,3) PATH '$.col_a'”
这样我就可以直接将这个 clob 值放在我的 plsql 块中并像下面这样获取
select t.*,jt.*
from
table_1 t,
json_table(t.json_doc,'$' columns (col_a NUMBER(22,3) PATH '$.col_a',col_b NUMBER(22,3) PATH '$.col_b',col_c NUMBER(22,3) PATH '$.col_c',col_d NUMBER(22,3) PATH '$.col_d'))jt
但我不确定我是否可以使用 REPLACE 或任何其他功能来做到这一点。 我可以通过在生成动态列的原始列表时连接来实现它,但我想避免这种额外的负担。
注意:所有列都是 NUMBER(22,3) 数据类型,所以这不是负担。
【问题讨论】:
标签: json oracle concatenation