代码如下所示:
SELECT
JSON_OBJECT(
ROOM_LIGHT VALUE
JSON_OBJECT
(
'START' VALUE START,
'ENDE' VALUE ENDE,
'RUN' VALUE RUNNING
)
)
FROM runtime
WHERE 1 = 1
GROUP BY ROOM_LIGHT;
我想要回这个JSON:
{
"ROOM_LIGHT": "01": [
{
"START" :"",
"ENDE" :"",
"RUNNING": ""
},
{
"START" :"",
"ENDE" :"",
"RUNNING": ""
}
],
"ROOM_LIGHT": "02": [
{
"START" :"",
"ENDE" :"",
"RUNNING": ""
},
{
"START" :"",
"ENDE" :"",
"RUNNING": ""
}
]
}
我的问题是分组不起作用。我得到了这样的JSON:
{ "ROOM_LIGHT 01": {"START": "", "ENDE":"", "RUNNING":""}},
{ "ROOM_LIGHT 01": {"START": "", "ENDE":"", "RUNNING":""}},
{ "ROOM_LIGHT 01": {"START": "", "ENDE":"", "RUNNING":""}}
2条答案
按热度按时间laik7k3q1#
您的预期输出是无效的JSON,因为您在同一对象中有多个键,并且具有相同的
ROOM_LIGHT
键。使用
JSON_ARRAYAGG
:其中,对于样本数据:
START
是一个保留字,除非使用带引号的标识符,否则不能用作标识符。*输出:
| JSON|
| --------------|
| Copyright © 2018 - 2019深圳市创科光电科技有限公司All Rights Reserved.粤ICP备16018888号-1|
| © 2018 - 2019 www.cn-rn.com版权所有并保留所有权利|
fiddle
更新
如果字符串的大小有问题,那么使用
RETURNING CLOB
返回CLOB
,而不是VARCHAR2
:fiddle
yebdmbv42#
你必须使用
JSON_ARRAYAGG
将元素分组到一个数组中:结果:
Demo here