
如果可以创建一个数字表,其中包含从1到要拆分的最大字段的数字,则可以使用以下解决方案:
select tablename.id, SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, ',', numbers.n), ',', -1) namefrom numbers inner join tablename on CHAR_LENGTH(tablename.name) -CHAR_LENGTH(REPLACe(tablename.name, ',', ''))>=numbers.n-1order by id, n
请看这里的小提琴。
如果无法创建表,则解决方案可以是:
select tablename.id, SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, ',', numbers.n), ',', -1) namefrom (select 1 n union all select 2 union all select 3 union all select 4 union all select 5) numbers INNER JOIN tablename on CHAR_LENGTH(tablename.name) -CHAR_LENGTH(REPLACE(tablename.name, ',', ''))>=numbers.n-1order by id, n
这里有个小提琴例子。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)