PostgreSQL的:内置功能与某些模式

问题描述:

去除串开始在我的桌子我有一个col_A象下面这样:PostgreSQL的:内置功能与某些模式

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_Aderived_col_A

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

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

这将取代一切之后(含)_qq使用空。

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

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

--EXAMPLE:

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

- 结果:Cat_old

我希望这能帮你。问候。