opengauss如何将一个字符串拆分成一列多行的形式?
今天上班期间,有同事提在群里提出了一个问题,问opengauss数据库中如何将字符串拆分为一列多行的形式,我们都知道,opengauss数据库和PostgreSQL数据库语法基本是一致的,以字符串‘赵钱孙李周吴郑王’为例,
今天上班期间,有同事提在群里提出了一个问题,问opengauss数据库中如何将字符串拆分为一列多行的形式,我们都知道,opengauss数据库和PostgreSQL数据库语法基本是一致的,以字符串 ‘赵钱孙李周吴郑王’ 为例,
一:PostgreSQL数据库拆分字符串
1:在PostgreSQL数据库中拆分一个字符串用到的是regexp_split_to_table函数,regexp_split_to_table 是 PostgreSQL 中的一个函数,用于将一个字符串根据正则表达式进行分割,并将结果返回为一个表格(每个分割后的部分作为一行)。这个函数非常有用,特别是在处理复杂字符串时。
我们先来看看regexp_split_to_table函数在pg数据库执行的结果
select regexp_split_to_array('赵钱孙李周吴郑王', '');--将字符串转化为数组

2:在PostgreSQL数据库中拆分一个字符串还可以用到regexp_split_to_array函数,该函数用于分割字符串至数组元素,使用正则表达式分割字符串
select regexp_split_to_array('赵钱孙李周吴郑王', '');--将字符串转化为数组

再用unnest函数将数组转化为多行,即行专列,请看执行结果
select regexp_split_to_array('赵钱孙李周吴郑王', '');--将字符串转化为数组

二:opengauss数据库拆分字符串
由于pg数据库和opengauss数据库的语法差异,使用在regexp_split_to_table()函数的使用上,也有差异,由于博主本地没有搭建高斯数据库环境,所以直接将代码展示出来,有兴趣的同学们可以自己在opengauss数据库上去做测试
opengauss拆分字符串有三种方法
1:select regexp_split_to_table('赵钱孙李周吴郑王', '()');--至于为什么第二个参数是'()',这个博主也是靠试出来的,有知道的同学们写在评论区。
2:select "unnest"(regexp_split_to_array('赵钱孙李周吴郑王', NULL));--此函数的第二个参数为NULL。
3:WITH tmp AS (
SELECT generate_series (1,LENGTH ('赵钱孙李周吴郑王')) AS pos)
SELECT SUBSTRING ('赵钱孙李周吴郑王' FROM pos FOR 1) FROM tmp;--此语法pg和og语法通用
目录
2:在PostgreSQL数据库中拆分一个字符串还可以用到regexp_split_to_array函数,该函数用于分割字符串至数组元素,使用正则表达式分割字符串
1:select regexp_split_to_table('赵钱孙李周吴郑王', '()');--至于为什么第二个参数是'()',这个博主也是靠试出来的,有知道的同学们写在评论区。
2:select "unnest"(regexp_split_to_array('赵钱孙李周吴郑王', NULL));--此函数的第二个参数为NULL。
(1)generate_series() 是一个非常实用的内置函数,它能够根据给定的起始值和结束值生成一系列连续的数字。
(2)再根据SUBSTRING函数从对应位置截取对应位置数字的字符,输出

(1)generate_series() 是一个非常实用的内置函数,它能够根据给定的起始值和结束值生成一系列连续的数字。
generate_series()函数语法如下
generate_series(start, stop, step)
start: 序列的起始值。
stop: 序列的结束值。
step: 序列的步长(可选)。默认为 1。
(2)再根据SUBSTRING函数从对应位置截取对应位置数字的字符,输出
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐




所有评论(0)