mysql没有返回正确的json

时间:2018-02-23 21:11:48

标签: mysql sql arrays json

我使用mysql 5.7

我想将连接表的结果连接成单列。我使用包含在JSON_OBJECT函数中的GROUP_CONCAT函数。这是查询

SELECT r.id, r.name,
GROUP_CONCAT(
    JSON_OBJECT(
       'id', i.id, 'name', i.name, 'metrics', i.metrics, 'amount', ir.amount,
                  'cat_id', i.cat_id, 'cat_name', ic.name
    )) AS ingredients
FROM recipes r, ingredient_recipe_meta ir, ingredients i, ingredient_category ic
WHERE r.id = ir.recipe_id
AND i.id = ir.ingredient_id
AND i.cat_id = ic.id
GROUP BY r.id
LIMIT 1

ingredients包含来自连接表的数据。数据检索正确,但问题是ingredients列没有转换为正确的JSON。 princsreen 正如你所看到的那样,最后有点“切”。

我也试过JSON_ARRAY,但现在它没有转换为正确的数组。看起来,字符串太大而且不适合列。有办法解决这个问题吗?

更新

问题必须是尺寸不合适的尺寸。我试图从连接表中选择较少的列,并且它可以正常工作。也许有选择的方法可以将我的json列转换为'on fly'文本?我试图将列转换为文本,如

CAST(GROUP_CONCAT(...   AS TEXT) 

但它会出现语法错误

1 个答案:

答案 0 :(得分:4)

问题是因为GROUP_CONCAT函数的字符串长度有限,这是1024,感谢@Paul Spiegel在评论部分提到这一点。长度可以很容易地增加,这post清楚地解释了