首页 > 解决方案 > Postgres 函数将单词拆分为具有额外逻辑的数组

问题描述

我一直在玩 psql 并将名称拆分为一个数组,例如:

select string_to_array('joseph jones', ' ');
string_to_array 
-----------------
{joseph,jones}

这完全符合我的预期。

但是,我的数据集包含许多前面带有“o”的姓氏。

select string_to_array('joseph o carroll', ' ');
string_to_array 
-----------------
{joseph,o,carroll}

有什么办法可以添加一些额外的逻辑,以便如果一个单词前面有一个“o”,那么它会被捆绑到下一个单词中?

所以joseph o carroll会回来{joseph,o carroll}

标签: regexpostgresql

解决方案


通过使用正则表达式,我想我找到了解决方案:

select regexp_split_to_array('joseph o jones','(?<!o)(\s+)');


推荐阅读