如何在MySQL中使用方括号和逗号将字符串拆分为列和行

时间:2019-04-05 07:20:34

标签: mysql split

我想分割如下字符串:[[6, 10, 11, 16], [0.4444444444444445, 53.0, 7.555555555555555, 5.111111111111111]]

输出

id       value
---------------------------
6        0.4444444444444445
10       53.0
11       7.555555555555555
16       5.111111111111111

字符串中'id'的数量不同,但是'id'总是有值。

1 个答案:

答案 0 :(得分:0)

这可以通过使用存储过程来完成,该存储过程将字符串切碎,创建(临时)表,将结果存储在所述表中并使用SELECT语句返回表内容。

但是,这不太可能是一种有效的方法-写入将非常耗时,执行时间也不会很长,如果您传递大量数据或被反复调用。

一种更简单的方法(以及我要遵循的路线)是使用您喜欢的编程语言进行此操作,然后将结果存储在数据库中。 另外,您的代码输出可以是带有UNION的查询,它将返回所需的数据结构。本质上,任务是转置二维数组并构造输出。如果它不是太大,那么它将是快速而有效的,并且如果需要将其与其他数据结合起来,可以用作子查询。

为了给您和想法,输出可能如下:

SELECT 6 AS id, 0.4444444444444445 AS value
UNION ALL SELECT 10, 53.0
UNION ALL SELECT 11,7.555555555555555
UNION ALL SELECT 16, 5.111111111111111

投入实际使用:

SELECT 
   sub.id,
   sub.value,
   info.someFieldFromAnotherTable
FROM
   (SELECT 6 AS id, 0.4444444444444445 AS value
    UNION ALL SELECT 10, 53.0
    UNION ALL SELECT 11,7.555555555555555
    UNION ALL SELECT 16, 5.111111111111111
   ) AS sub
   INNER JOIN otherInfoTable info ON info.id = sub.id