本篇博文已经迁移,阅读全文请点击:
本博客已经迁移至:
前言:
由于很多业务表因为历史原因或者性能原因,都使用了违反第一范式的设计模式。即同一个列中存储了多个属性值(具体结构见下表)。
这种模式下,应用常常需要将这个列依据分隔符进行分割,并得到列转行的结果。
表数据:
ID
Value
1
tiny,small,big
2
small,medium
3
tiny,big
期望得到结果:
ID
Value
1
tiny
1
small
1
big
2
small
2
medium
3
tiny
3
big
正文:
#需要处理的表create table tbl_name (ID int ,mSize varchar(100));insert into tbl_name values (1,'tiny,small,big');insert into tbl_name values (2,'small,medium');insert into tbl_name values (3,'tiny,big');
#用于循环的自增表create table incre_table (AutoIncreID int);insert into incre_table values (1);insert into incre_table values