MySQL提供了一个函数GROUP_CONCAT来实现将多个字段合并为一个文本字段,大家可以使用GROUP_CONCAT函数来实现将一行的数据拆分成多行。
SELECT SUBSTRING_INDEX( SUBSTRING_INDEX(GROUP_CONCAT(str SEPARATOR ''), ',', num), ',', -1 ) str FROM (SELECT '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ' str, 5 num) a CROSS JOIN (SELECT 1 num UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) b WHERE num<= 10
上面的SQL语句中,大家首先使用GROUP_CONCAT函数将一行的数据合并成一个字符串。然后使用SUBSTRING_INDEX函数将字符串按照逗号分隔符拆分成多个部分,再按照num参数指定的长度将字符串分段,最后将分段后的字符串重新拼接成多行数据。
需要注意的是,在使用GROUP_CONCAT函数时需要指定SEPARATOR参数来指定分隔符,否则会默认使用逗号作为分隔符。而在使用SUBSTRING_INDEX函数时,需要注意参数的顺序和值的取值范围。