如何 return JSON_ARRAY 使用 GROUP_CONCAT
How to return JSON_ARRAY using an GROUP_CONCAT
我已经使用 "concat" 和 "group_concat" 函数尝试 return json 对象。
问题是我需要使用 group_concat 但我想要一个有效的 JSON 结构。我做错了什么?
- {"a":"a", "b": "b", "id": 空}
- [{"id": "123"}]
...
SELECT JSON_REPLACE((
SELECT JSON_OBJECT(
'a', 'a',
'b', 'b',
'id', null
)), '$.id', (
SELECT CONCAT(
'[', group_concat(JSON_OBJECT(
'id',
'123')),
']'))
)
结果:{"a": "a", "b": "b", "id": "[{\"id\": \"123\"}]"}
预计:{"a": "a", "b": "b", "id": [{"id": "123"}]}
这就是你需要的JSON_ARRAYAGG
SELECT JSON_REPLACE((SELECT JSON_OBJECT(
'a', 'a',
'b', 'b',
'id', null
)), '$.id',
(SELECT JSON_ARRAYAGG(JSON_OBJECT('id','123')))
)
如果不使用 JSON_ARRAYAGG
SELECT JSON_REPLACE((SELECT JSON_OBJECT(
'a', 'a',
'b', 'b',
'id', null
))
, '$.id'
, (SELECT JSON_ARRAY(CAST(group_concat(JSON_OBJECT('id','123')) as json)))
)
JSON_REPLACE
的第三个参数的额外 CAST
ing AS JSON
修复了问题:
SELECT JSON_REPLACE((
SELECT JSON_OBJECT(
'a', 'a',
'b', 'b',
'id', null
)), '$.id',
CAST( CONCAT('[', GROUP_CONCAT(
JSON_OBJECT('id', '123')),
']') AS JSON )) as "Result JSON"
Result :
{
"a": "a",
"b": "b",
"id": [
{
"id": "123"
}
]
}
我已经使用 "concat" 和 "group_concat" 函数尝试 return json 对象。 问题是我需要使用 group_concat 但我想要一个有效的 JSON 结构。我做错了什么?
- {"a":"a", "b": "b", "id": 空}
- [{"id": "123"}]
...
SELECT JSON_REPLACE((
SELECT JSON_OBJECT(
'a', 'a',
'b', 'b',
'id', null
)), '$.id', (
SELECT CONCAT(
'[', group_concat(JSON_OBJECT(
'id',
'123')),
']'))
)
结果:{"a": "a", "b": "b", "id": "[{\"id\": \"123\"}]"}
预计:{"a": "a", "b": "b", "id": [{"id": "123"}]}
这就是你需要的JSON_ARRAYAGG
SELECT JSON_REPLACE((SELECT JSON_OBJECT(
'a', 'a',
'b', 'b',
'id', null
)), '$.id',
(SELECT JSON_ARRAYAGG(JSON_OBJECT('id','123')))
)
如果不使用 JSON_ARRAYAGG
SELECT JSON_REPLACE((SELECT JSON_OBJECT(
'a', 'a',
'b', 'b',
'id', null
))
, '$.id'
, (SELECT JSON_ARRAY(CAST(group_concat(JSON_OBJECT('id','123')) as json)))
)
JSON_REPLACE
的第三个参数的额外 CAST
ing AS JSON
修复了问题:
SELECT JSON_REPLACE((
SELECT JSON_OBJECT(
'a', 'a',
'b', 'b',
'id', null
)), '$.id',
CAST( CONCAT('[', GROUP_CONCAT(
JSON_OBJECT('id', '123')),
']') AS JSON )) as "Result JSON"
Result : |
---|
{
"a": "a",
"b": "b",
"id": [
{
"id": "123"
}
]
}