SQL 将一列拆分成多列
创始人
2025-01-15 19:09:21
0

数据库中有业务表t1和字典表dictionary

t1表:                                                                     dictionary表:

                                                   

需求一:将col列拆分成三列

SQL 代码如下所示:

方法一:

SELECT col,a[1] a1,a[2] a2,a[3] a3 FROM 	(  		SELECT regexp_split_to_array( col, ',' ), col FROM t1  	) AS dt (a)

效果:

方法二:

SELECT 	col, 	SPLIT_PART( col, ',', 1 ) a1, 	SPLIT_PART( col, ',', 2 ) a2, 	SPLIT_PART( col, ',', 3 ) a3  FROM 	t1

效果:

 假设想把 "col" 列分成 "col1" 、 "col2"、 "col3",SQL语句:
1、先添加新的列
ALTER TABLE t1 ADD COLUMN col1 VARCHAR(30); ALTER TABLE t1 ADD COLUMN col2 VARCHAR(30); ALTER TABLE t1 ADD COLUMN col3 VARCHAR(30);
2、再用 SPLIT_PART 函数填充新的列
UPDATE t1  SET col1 = SPLIT_PART( col, ',', 1 ), col2 = SPLIT_PART( col, ',', 2 ), col3 = SPLIT_PART( col, ',', 3 );

效果:

 

需求二:列col保存的数据,是字典表dictionary中id值拼接的字符串,想关联出对应 的name值。

SQL 代码如下所示:

SELECT col, 	(SELECT name from dictionary WHERE id=a[1]) a1, 	(SELECT name from dictionary WHERE id=a[2]) a2, 	(SELECT name from dictionary WHERE id=a[3]) a3 FROM 	(  		SELECT regexp_split_to_array( col, ',' ), col FROM t1  	) AS dt (a)

效果:

 需求三:列col转化为字典表dictionary中name拼接的字符串

SQL 代码如下所示:

 SELECT col,CONCAT_WS(',',a1,a2,a3) as names FROM 	(  		SELECT col, 			(SELECT name from dictionary WHERE id=a[1]) a1, 			(SELECT name from dictionary WHERE id=a[2]) a2, 			(SELECT name from dictionary WHERE id=a[3]) a3 		FROM 			(  				SELECT regexp_split_to_array( col, ',' ), col FROM t1  			) AS dt (a) 	) as temp

效果:

总结 :

        我们可能会遇到按分隔符拆成多行或者多列的情况,以及复制的业务需求,只需视情况调整sql语句,或者编写存储过程。

        对于列col的值,按分隔符拆分为多列数据时,不知道需要拆分成几列,可以先用以下sql查询出列数。

SELECT max(array_length(regexp_split_to_array(col,','),1)) FROM t1;

相关内容

热门资讯

重磅来袭!wepoker辅助脚... 重磅来袭!wepoker辅助脚本,心悦填大坑辅助视频,确实是有辅助脚本(有挂方针)1、进入游戏-大厅...
专业讨论!aapoker真的假... 专业讨论!aapoker真的假的,爱玩联盟辅助软件视频讲解,竟然是真的有辅助透视(有挂攻略)1、不需...
专业讨论!wpk辅助器,微乐家... 专业讨论!wpk辅助器,微乐家乡官方app下载,确实有辅助安装(真的有挂)1、专业讨论!wpk辅助器...
新手必备!hhpoker一直输... 新手必备!hhpoker一直输有挂吗,心悦踢透视辅助器免费,总是真的是有辅助开挂(有挂方法)1、心悦...
最新通报!pokemmo免费脚... 最新通报!pokemmo免费脚本,雷霆辅助器,原来真的是有辅助教程(新版有挂)1、下载好pokemm...
记者爆料!hhpoker是正品... 记者爆料!hhpoker是正品吗,途游四川辅助器是真的吗,好像真的有辅助插件(有挂规律)1、金币登录...
推荐攻略!pokemmo辅助工... 推荐攻略!pokemmo辅助工具,微信微乐开挂,其实有辅助神器(有挂技术)1、不需要AI权限,帮助你...
交流学习经验!wepoker辅... 交流学习经验!wepoker辅助器怎么弄,决战13水辅助,好像真的是有辅助脚本(有挂技巧)1、交流学...
一分钟揭秘!如何下载wepok... 一分钟揭秘!如何下载wepoker安装包,拱趴大菠萝有辅助吗,切实真的有辅助神器(新版有挂)1、超多...
推荐一款!约局吧作必弊脚本,欢... 推荐一款!约局吧作必弊脚本,欢聚水鱼辅助插件,果然真的是有辅助透视(有挂辅助)1、许多玩家不知道约局...