我们经常在使用数据库都是行转列,或列转行,这都比较常见,但是工作中遇到了一个问题,在mysql数据库中存在一个字段,存的是一个全路径,并且各级路径ID以逗号隔开,现在需要用逗号,将一列拆分成多列显示,也就是列转列,需要怎么做呢?
首先,模拟一条数据出来:
SELECT '100015011,546,100011239,695,6915038369' COL;
接下来,需要将这一列数据以逗号分隔拆分成5列,需要使用SUBSTRING_INDEX函数。先介绍下这个函数的用法:
SUBSTRING_INDEX(str,delim,count) -- str: 被分割的字符串; delim: 分隔符; count: 分割符出现的次数。
cout 为整数标识从左边开始,count为负数从右边开始。
接下来具体实现:
SELECT
B.COL,
SUBSTRING_INDEX( SUBSTRING_INDEX( B.COL, ',', 1 ), ',', - 1 ) one,
SUBSTRING_INDEX( SUBSTRING_INDEX( B.COL, ',', 2 ), ',', - 1 ) two,
SUBSTRING_INDEX( SUBSTRING_INDEX( B.