【问题标题】:Ask for a reqular expression to remove prefix or suffix from a string in Oracle要求正则表达式从 Oracle 中的字符串中删除前缀或后缀
【发布时间】:2014-05-06 01:12:22
【问题描述】:

我想从字符串中删除前缀或后缀,字符串如下所示:
L-CHGSUP-CDO-BR-NET|MS COORDINATOR X|MS COORDINATOR Z|
|L-CHGSUP-CDO-BR-NET|MS COORDINATOR X|MS COORDINATOR Z|||
我想在字符串的末尾或开头删除分隔符|,在最后,字符串应如下所示:
L-CHGSUP-CDO-BR-NET|MS COORDINATOR X|MS COORDINATOR Z

那么,如何在 PLSQL 中编写正则表达式来做到这一点?

【问题讨论】:

标签: regex plsql oracle11g


【解决方案1】:

这个正则表达式完成了这项工作:

select regexp_replace('|L-CHGSUP-CDO-BR-NET|MS COORDINATOR X|MS COORDINATOR Z|||','(^[\|]*)|[\|]*$') from dual

【讨论】:

    【解决方案2】:

    正如 EatÅPeach 建议的那样,您不需要为此使用正则表达式,内置的 TRIM function 就可以了:

    select trim('|' from '|L-CHGSUP-CDO-BR-NET|MS COORDINATOR X|MS COORDINATOR Z|||')
    from dual;
    
    TRIM('|'FROM'|L-CHGSUP-CDO-BR-NET|MSCOORDINATORX|MSCOORDINATORZ|||')
    --------------------------------------------------------------------
    L-CHGSUP-CDO-BR-NET|MS COORDINATOR X|MS COORDINATOR Z   
    

    或者,如果您已经拥有该值并希望在 PL/SQL 中对其进行修整(作为一个人为的示例):

    set serveroutput on
    declare
      old_value varchar2(80);
      new_value varchar2(80);
    begin
      old_value := '|L-CHGSUP-CDO-BR-NET|MS COORDINATOR X|MS COORDINATOR Z|||';
      new_value := trim('|' from old_value);
      dbms_output.put_line(new_value);
    end;
    /
    
    anonymous block completed
    L-CHGSUP-CDO-BR-NET|MS COORDINATOR X|MS COORDINATOR Z
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-15
      • 2020-05-19
      • 1970-01-01
      • 2018-11-10
      • 2021-03-18
      • 1970-01-01
      • 2023-04-05
      • 2015-06-08
      相关资源
      最近更新 更多