首页新闻找找看学习计划

怎样将一行数据分割成多行

0
悬赏园豆:50 [已解决问题] 解决于 2020-01-17 10:03


如图将字段里的数据根据逗号分割出来,使这一行变成多行,求详细SQL语句

Code&nbspFuture的主页 Code Future | 初学一级 | 园豆:140
提问于:2020-01-15 17:57
< >
分享
最佳答案
0

https://docs.microsoft.com/zh-cn/sql/t-sql/functions/string-split-transact-sql?view=sql-server-2017
这个函数很好用,直接将字符串分割成多行子字符串

Code Future | 初学一级 |园豆:140 | 2020-01-17 09:52
其他回答(3)
-1
猝不及防 | 园豆:1714 (小虾三级) | 2020-01-15 18:09
1

如果楼主是mysql 这篇文章应该有一定的帮助:cnblogs.com/ants_double/p/11088864.html
如果是sqlserver 这篇文章应该可以的 https://www.cnblogs.com/51net/archive/2013/01/14/2859848.html
语句大致是这样:
select
a.id,b.school
from
(select id,school=convert(xml,' <root> <v>'+replace(school,',',' </v> <v>')+' </v> </root>') from Tab)a
outer apply
(select school=C.v.value('.','nvarchar(100)') from a.school.nodes('/root/v')C(v))b

收获园豆:50
初夏的阳光丶 | 园豆:488 (菜鸟二级) | 2020-01-15 18:11

回答很全面,你这个方法我试了可以,但我还发现了一个更好的方法

支持(0) 反对(0) Code Future | 园豆:140 (初学一级) | 2020-01-17 10:00
0

select oth

于者 | 园豆:204 (菜鸟二级) | 2020-01-16 20:49

select oth
from table_name A1
lateral view explode(A1.School, ',') as oth
;

over

支持(0) 反对(0) 于者 | 园豆:204 (菜鸟二级) | 2020-01-16 20:51

lateral view是hive的,oracle 是
select regexp_substr(school, '[^,]', 1, level) as sch
from table_name
connect by level <= regexp_count(school, '[^,]')
AND (prior dbms_random.values) is not null ;

支持(0) 反对(0) 于者 | 园豆:204 (菜鸟二级) | 2020-01-16 21:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册