首页 > 解决方案 > 在mysql中将逗号分隔值拆分为多行

问题描述

我有一张这样的表,并将
表名视为示例

   info | values
  -------------
   1     1,2,4,5
   2     5, 6,7

当我选择信息值为 1 而不是逗号分隔值的示例表时,有什么方法可以拆分值并将其作为多行返回

    info | values
     1      1
     1      2
     1      4
     1      5 

如果我得到这个,我会将它作为子查询并将其传递给 where in cluase 以从其他表中获取其他数据。

标签: mysqlsql

解决方案


如果您知道最大数量,则可以使用一堆union alls。对于您的示例数据,这就足够了:

select col1, substring_index(col2, ',', 1)
from t
union all
select col1, substring(substring_index(col2, ',', 2), ',', -1)
from t
where col2 like '%,%'
union all
select col1, substring(substring_index(col2, ',', 3), ',', -1)
from t
where col2 like '%,%,%'
union all
select col1, substring(substring_index(col2, ',', 4), ',', -1)
from t
where col2 like '%,%,%,%';

推荐阅读