当前位置:   article > 正文

postgresql根据字符分割数据为多列_pgsql通过某一字段分割为三条数据

pgsql通过某一字段分割为三条数据

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/268456
推荐阅读
相关标签
  

闽ICP备14008679号