开发者社区 问答 正文

SQL将值拆分为多行

我有桌子:

id | name
1 | a,b,c
2 | b 我想要这样的输出:

id | name
1 | a
1 | b
1 | c
2 | b

展开
收起
保持可爱mmm 2020-05-08 11:01:17 282 分享 版权
1 条回答
写回答
取消 提交回答
  • 如果可以创建一个数字表,其中包含从1到要拆分的最大字段的数字,则可以使用以下解决方案:

    select tablename.id, SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, ',', numbers.n), ',', -1) name from numbers inner join tablename on CHAR_LENGTH(tablename.name) -CHAR_LENGTH(REPLACE(tablename.name, ',', ''))>=numbers.n-1 order by id, n 请看这里的小提琴。

    如果无法创建表,则解决方案可以是:

    select tablename.id, SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, ',', numbers.n), ',', -1) name from (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-1 order by id, n来源:stack overflow

    2020-05-08 11:01:28
    赞同 展开评论
问答分类:
SQL
问答标签:
问答地址: