PostgreSQL 字符串分隔函数(regexp_split_to_table)介绍以及示例应用

本文介绍了PostgreSQL的regexp_split_to_table函数,用于拆分字符串。在实际项目中,面对以分号分隔的机构大学数据,通过该函数拆分后进行统计,避免了直接查询的错误。示例中展示了如何使用函数拆分数据,并给出了一段SQL语句,用于统计拆分后的大学和机构数量,从而获取准确的统计结果。

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

在项目开发中,有时会遇到需要按某个字符拆分列数据的情况,本文详细介绍 postgre 数据库拆分字符(regexp_split_to_table)以及实际项目应用。

PostgreSQL 字符串分隔函数

-- 分割成数组,可以使用下标取值
select (regexp_split_to_array('11,22,33',','))[2];
-- 分割成虚拟表,可以直接当做正常表使用,进行连接查询,增加查询条件等等
select re from regexp_split_to_table('11,22,33',',') re where re='11';

PostgreSQL 字符串分隔函数示例应用

实际项目需求

在我们项目中,需要按一定的条件统计机构大学的数量并排名,数据库表中有些数据是以分号 ( ; )拼接的多个机构大学,
比如:武汉大学;河北省电力公司电力科学研究院

这样的话,直接统计是错误的,需要先把数据按分号 ( ; )拆分成独立的大学和机构,再进行统计数量。

实际数据

直接查询数据是 1168 条。

在这里插入图片描述

拆分数据

先使用 regexp_split_to_table 函数查看一下拆分后数据,拆分后大学和机构为 2797 条。

SELECT
	regexp_split_to_table( applicant, ';' ) AS inventor_
FROM
    表名 
-- 查询条件已省略

在这里插入图片描述

这里查看一下拆分后数据,可以看到,同样查询条件,数据已经被拆分开了,统计拆分数据才可以得到正确的结果。

实际应用

在项目中,我们将拆分后数据作为虚拟表进行查询统计。

查询执行过程为:首先根据查询条件查询出符合要求数据,然后拆分数据,最后统计总数。

sql 语句

SELECT
	regexp_split_to_table( applicant, ';' ) AS inventor_,
    COUNT ( * ) 
FROM
	表名 pt 
WHERE
	-- 查询条件已省略 
GROUP BY
	inventor_ 
ORDER BY
COUNT DESC 
LIMIT 10

统计数据
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

非科班Java出身GISer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值