从匹配模式 postgresql 的字符串中删除字符

remove characters from the strings matching pattern postgresql

我在列中有一些包含字符“|”的文本元素以及紧随其后的其余部分我需要摆脱:

campaign
abc
fdg|3234
dfr|4567

我希望它看起来像:

campaign
abc
fdg
dfr

我试过了:

select replace (data_2_crm.campaign, '_|_', '' ) from data_2_crm
select trim (trailing '.*|' from campaign) from data_2_crm
select trim (trailing '%|' from campaign) from data_2_crm

没用。请帮忙!

使用split_part():

select t.*, split_part(campaign, '|', 1)
from data_2_crm;

对模式使用正则表达式替换 \|.*$:

SELECT
    campaign,
    REGEXP_REPLACE(campaign, '\|.*$', '') AS new_campaign
FROM data_2_crm;

Demo