相关疑难解决方法(0)

将MySQL中的JSON数组转换为行

更新:现在可以通过JSON_TABLE函数在MySQL 8中实现:https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html

我喜欢MySQL 5.7中的新JSON函数,但是试图将JSON中的值合并到一个普通的表结构中.

从中获取JSON,操作和提取数组等很简单.一路JSON_EXTRACT.但是从JSON数组到行的逆转呢?也许我对现有的MySQL JSON功能非常密切,但我还是无法解决这个问题.

例如,假设我有一个JSON数组,并希望为数组中的每个元素插入一行及其值?我找到的唯一方法是编写一堆JSON_EXTRACT(...'$ [0]')JSON_EXTRACT(...'$ [1]')等并将它们组合在一起.

或者,说我有一个JSON数组,并希望GROUP_CONCAT()它到一个逗号分隔的字符串?

换句话说,我知道我可以这样做:

SET @j = '[1, 2, 3]';
SELECT GROUP_CONCAT(JSON_EXTRACT(@j, CONCAT('$[', x.n, ']'))) AS val
  FROM   
  (    
    SELECT 0 AS n    
    UNION    
    SELECT 1 AS n    
    UNION    
    SELECT 2 AS n    
    UNION    
    SELECT 3 AS n    
    UNION    
    SELECT 4 AS n    
    UNION    
    SELECT 5 AS n    
  ) x
WHERE x.n < JSON_LENGTH(@j);
Run Code Online (Sandbox Code Playgroud)

但这伤害了我的眼睛.而我的心.

我该怎么做:

SET @j = '[1, 2, 3]';
SELECT GROUP_CONCAT(JSON_EXTRACT(@j, '$[ * ]'))
Run Code Online (Sandbox Code Playgroud)

...并将它与数组中的值和JSON数组本身连接在一起?

我想我在这里寻找的是某种JSON_SPLIT:

SET …
Run Code Online (Sandbox Code Playgroud)

mysql json database-normalization

21
推荐指数
3
解决办法
3万
查看次数

标签 统计

database-normalization ×1

json ×1

mysql ×1