Oracle JSON_TABLE - 无法在Varchar(4000)中填充查询结果

时间:2017-01-11 21:26:18

标签: sql json oracle oracle11g

我对oracle JSON_TABLE有疑问。我正在咨询表中CLOB Column()中的JSON。这是我的疑问:

select b.jsonvalue
from TB_ABC a, 
json_table(a.json_value, '$[*]' 
columns(
          targett VARCHAR2 PATH '$.target',
          jsonvalue varchar2(4000) FORMAT JSON PATH '$.targetData[*]',
          NESTED PATH '$.targetData[*]' COLUMNS(
            typee VARCHAR2 PATH '$.type'
          )
      )
  ) b

但返回“jsonvalue”的值大于4000个字符,因此无法在Varchar2中填充。

我已经尝试将“jsonvalue”的数据类型更改为CLOB,但JSON_TABLE似乎不支持此数据类型。

我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:0)

您是否启用了扩展VARCHAR语义(AKA VARCHAR2(32k)..

这样可以返回最多32k的数据。你真的拥有超过32K数据的价值......

答案 1 :(得分:0)

在语句中,您仅指定VARCHAR2,而没有任何长度信息。不论MAX_STRING设置如何,都将在内部将其解释为VARCHAR2(4000)。 如果需要最大长度,请使用VARCHAR2(32767)代替VARCHAR2。

从12.2开始,还可以将CLOB或BLOB用作值> 32767的列数据类型。

相关问题