在做系统开发的时候,有可能是由于之前的遗留问题,导致在数据入库的时候,将多个数据以逗号分隔的实行,存储在一条数据中,例如:
ID VALUE1 yang,zheng,song
2 zhao,qian,sun
3 jiang
现在因为新的需求,需要将这些数据以下边的方式存储在数据库中,方便查询和处理:
ID VALUE1 yang
1 zheng
1 song
2 zhao
2 qian
2 sun
3 jiang
所以需要将原有的数据查询出来,然后进行逗号分隔为多行,并插入到新的表中。
假设我们需要处理的表的结构为:
NAME TYPE LENID INT 11
NAME VARCHAR 255
将数据查询并分隔的sql语句为:
SELECT a.id, substring_index( substring_index( a.name, ',', b.help_topic_id + 1 ), ',',- 1 ) name FROM table1 a JOIN mysql.help_topic b ON b.help_topic_id < ( length( a.name ) - length( REPLACE ( a.name, ',', '' ) ) + 1 ) ORDER BY a.id