mysql问题

现在有一个字段里面存的是7,90,20怎么把他独立分成多行显示

promiseykl1988 发布于 2019-11-8 18:58
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
枫城Lv7初级互助
发布于2019-11-9 11:13


create table test

( code varchar(10),

  single_No varchar(100))

 

 insert into  test(code,single_No)

 select '001',',201801001,201801004,201801005,201801006,'

 union 

 select '002',',201801002,201801003,201801009,201801007,201801008,'



 

;with temp as 

( select a.code,a.single_No, charindex(',',a.single_No) as start, charindex(',',a.single_No)-1 as lenth

  from test a

  union all

  select b.code,b.single_No,charindex(',',b.single_No,start+1), charindex(',',b.single_No,start+1)-start-1 as lenth

  from temp b 

  where start<>0

)

 

select  top(100) percent substring(single_No,start -lenth,lenth) as obj, code

into #te

from temp

where (start <> 0)

order by code

image.pngimage.png

最佳回答
0
wangdlLv2见习互助
发布于2019-11-8 22:08

用截取函数呢,如果多行不确定 就要用存储过程

最佳回答
0
圣体叶小凡Lv6高级互助
发布于2019-11-9 14:13

新建一个a表

CREATE TABLE `a` (

  `ut` varchar(255) DEFAULT NULL,

  `so` varchar(1000) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO `a` VALUES ('ut1', 'so1');

INSERT INTO `a` VALUES ('ut2', 'so2;so3');

INSERT INTO `a` VALUES ('ut3', 'so4;so5;so6');


然后sql如下:

select ut ,so from (

SELECT ut,substring_index(substring_index(a.so,';',b.help_topic_id+1),';',-1) as so from  (

 select ut ,so from  a

) a

join

mysql.help_topic b

on b.help_topic_id < (length(a.so) - length(replace(a.so,';',''))+1) 

where  LENGTH(substring_index(substring_index(a.so,';',b.help_topic_id+1),';',-1))>0 ) c


其中mysql.help_topic 这个表是mysql自带的,可以直接用就行,你只需要替换我其中ut和so字段就行了


image.pngimage.png

  • 4关注人数
  • 473浏览人数
  • 最后回答于:2019-11-9 14:13
    请选择关闭问题的原因
    确定 取消
    返回顶部