我使用mariaDB 10.3,我有一个表:
CREATE TABLE user(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, parameters longtext, PRIMARY KEY(id));
字符串
对于行:
INSERT INTO user VALUES (1, 'name1', '{"number": 1, "text": "some text"}'), (2, 'name2', '{"number": 2, "text": "some more text"}');
型
我正在尝试编写一个查询,将表作为JSON
对象返回。到目前为止
SELECT CONCAT(
'[',
GROUP_CONCAT(JSON_OBJECT('id',id,'name',name,'parameters', parameters)),
']'
)
FROM user;
型
但这返回:
[
{"id": 1,
"name": "name1",
"parameters": "{\"number\": 1, \"text\": \"some text\"}"
},
{
"id": 2,
"name": "name2",
"parameters": "{\"number\": 2, \"text\": \"some more text\"}"
}
]
型
这不是一个正确的JSON。我应该如何更改才能正确格式化parameters
?
我想得到的是:
[
{
"id": 1,
"name": "name1",
"parameters": {
"number": 1,
"text": "some text"
}
},
{
"id": 2,
"name": "name2",
"parameters": {
"number": 2,
"text": "some more text"
}
}
]
型
谢啦,谢啦
2条答案
按热度按时间ulydmbyx1#
只有
JSON_COMPACT
函数可以应用于parameters
列,该函数适用于MariaDB,在MySQL中不存在字符串
Demo的
ylamdve62#
您可以使用JSON_OBJECT、**JSON_ARRAYAGG(expr)**概念来获取结果。参考:https://www.tutorialspoint.com/mysql/mysql_aggregate_functions_json_arraygg.htm
我在我的一个项目工作中使用了这个