1. 拆分字段中有逗号的行为多行
SELECT
a.TASK_TEMPLATE_RESULT_KEY_ID,
SUBSTRING_INDEX(SUBSTRING_INDEX(a.OBJECTIVE_ANSWERS, ',', b.help_topic_id + 1),
',',
- 1) AS OBJECTIVE_ANSWERS
FROM
CT_TASK_TEMPLATE_RESULT a
LEFT JOIN
mysql.help_topic b ON b.help_topic_id < (LENGTH(a.OBJECTIVE_ANSWERS) - LENGTH(REPLACE(a.OBJECTIVE_ANSWERS, ',', '')) + 1)
ORDER BY a.TASK_TEMPLATE_RESULT_KEY_ID
在具体的使用中要注意条件。刚开始直接在程序中写了,在我本地测试的时候,没有发现什么问题,但是到了现场使用的时候,发现特别慢。最后分析发现时拆分逗号的这段sql执行特别慢,并且还有一个问题,其实字段里面还没有出现需要拆分的情况。所以增加了限制条件,只有存在需要拆分的数据的时候,才执行这段sql。这样修改完成之后,速度明显快了。
2. 行转列
3. 列转行