PostgreSQL 字符串分隔函数(regexp_split_to_table)介绍以及示例应用
在项目开发中,有时会遇到需要按某个字符拆分列数据的情况,本文详细介绍 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
统计数据
|