【问题标题】: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