PostgreSQL:内置函数删除以特定模式开头的子字符串

PostgreSQL: built-in function to remove substring starting with certain pattern

在我的 table 中,我有一个 col_A 如下所示:

col_A
-----------------------------------
Dog_qq123r_sdf
Cat_old_qq34569er
Bird_tweet_A_qqikdf0_qq_sdfad
Cow_moo_moo_qq1_qq2_qq3

我想从 col_A 创建一个派生列 derived_col_A。规则是'remove everything starting from first _qq'

col_A                            derived_col_A
------------------------------------------------
Dog_qq123r_sdf                      Dog
Cat_old_qq34569er                   Cat_old
Bird_tweet_A_qqikdf0_qq_sdfad       Bird_tweet_A
Cow_moo_moo_qq1_qq2_qq3             Cow_moo_moo

是否有内置函数可以将col_A转换为derived_col_A

您必须创建新列并使用下一句更新它:

select split_part(<string>, '_qq'::text, 1);

--示例:

  select split_part('Cat_old_qq34569er', '_qq'::text, 1); 

--结果:Cat_old

希望对您有所帮助。你好。

您可以使用 regexp_replace() 来处理这个问题:

 SELECT regexp_replace(Col_A, '_qq.*$',NULL) from your_table;

这会将 _qq 之后(包括)之后的所有内容替换为 null。