【问题标题】:PostgreSQL: built-in function to remove substring starting with certain patternPostgreSQL:删除以特定模式开头的子字符串的内置函数
【发布时间】:2018-03-31 23:21:13
【问题描述】:

在我的表中,我有一个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 的内置函数?

【问题讨论】:

    标签: sql postgresql replace built-in


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      您必须创建新列并使用下一句对其进行更新:

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

      --示例:

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

      --结果:Cat_old

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-28
        • 1970-01-01
        • 1970-01-01
        • 2019-03-06
        • 1970-01-01
        • 1970-01-01
        • 2018-12-22
        • 1970-01-01
        相关资源
        最近更新 更多