postgresql根据字符分割数据为多列

本文介绍在PostgreSQL中使用regexp_split_to_array和split_part函数分割数据库数据的方法,包括将数据按特定字符分割成多列的过程及如何存储分割后的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在实际的项目中我们经常会需要将数据库中的数据根据特定的字符比如: ‘,’ ‘-’ ‘+’ '*'等符号分割成多列。虽然分割数据工作可以在后端进行处理,但这样不能处理数据库中分成多列,供以后使用。

1.使用regexp_split_to_array 函数
这个函数顾名思义也就是根据匹配将字符串分割成数组
以下是例子,我将date数据如’2019-06-16’匹配’-'分割出2019 06 16三个char
在这里插入图片描述
当然这其中 to_char是将selltime列中date数据转换成char数据,之后 as dt(a) 意思是子查询查询结果别名为dt(a) 。(postgresql中子查询必须要有别名,不知道为啥,oracle中就不需要。)
其中dt(a) 应该是表示数组a,对应着前面select中的 a[1] a[2] a[3] (发现不是从0开始的)
这样就实现了分割数据为多列,可是 如何存进去呢
我想了办法就是insert into数据
在这里插入图片描述
可以看到结果
在这里插入图片描述

是插入新行里了,为此我还把bookid的非空约束给取消了。那么怎么插入以前的行里呢。
我没有查到能够用select数据update数据的方法,但是想到了存储过程中使用游标的方法。
将select的三个数据a[1],a[2],a[3]用游标循环分别存入三个变量中,然后update这个表中的三列数据,我太懒了。就不写了奥,哈哈。

2.split_part函数
这个函数有个缺点就是一次分割你只能选择一块输出,不能像前面一样把分割后的数据存到数组里。
在这里插入图片描述
虽然一次只能取一个数据,但是吧如果想多取点,那就多查询就好了
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值