mysql - 在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 以从其他表中获取其他数据。
解决方案
如果您知道最大数量,则可以使用一堆union all
s。对于您的示例数据,这就足够了:
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 '%,%,%,%';
推荐阅读
- django - 将列链接到静态子目录中的文件;django-tables2
- django-rest-framework - 在序列化器中重新定义一个字段
- dart - CustomScrollView 中的 Flutter 固定按钮
- corda - TDD - 在 R3 中运行合约测试的断言错误
- android - 用户级别的 Firebase Cloud Firestore 中的身份验证问题
- javascript - 合并来自不同 CSV 的对象数组
- html - React.js import font-awesome 不适用于 npm
- javascript - 使用 jQuery 切换?
- vba - 从 Internet 页面的下拉列表中选择
- php - 分别打印会话数组数据以供进一步使用