PostgreSQL:内置函数,用于从特定模式开始删除子串

时间:2017-10-19 20:02:28

标签: sql postgresql replace built-in

在我的表格中,我有col_A,如下所示:

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

我想从derived_col_A创建一个派生列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的内置函数?

2 个答案:

答案 0 :(得分:1)

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

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

这将用{null}替换_qq之后的所有内容。

答案 1 :(得分:0)

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

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

- 示例:

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

- 结果:Cat_old

我希望这可以帮到你。问候。