【发布时间】:2019-06-28 10:44:09
【问题描述】:
我有以下数据
1241 - ASGEF - AFZHE
1242 - ASGEF1
1243 - UJHAHAHG - AGHBNG
使用 oracle regexpr 的预期输出
ASGEF - AFZHE
ASGEF1
UJHAHAHG - AGHBNG
【问题讨论】:
我有以下数据
1241 - ASGEF - AFZHE
1242 - ASGEF1
1243 - UJHAHAHG - AGHBNG
使用 oracle regexpr 的预期输出
ASGEF - AFZHE
ASGEF1
UJHAHAHG - AGHBNG
【问题讨论】:
SUBSTR + INSTR 可能会运行得更快(即不需要正则表达式)。 result 显示了这一点,而 result_2 显示了一个正则表达式选项。
SQL> with test (col) as
2 (select '1241 - ASGEF - AFZHE' from dual union all
3 select '1242 - ASGEF1' from dual union all
4 select '1243 - UJHAHAHG - AGHBNG' from dual
5 )
6 select col,
7 trim(substr(col, instr(col, '-') + 1)) result,
8 ltrim(regexp_substr(col, '-.+'), '- ') result_2
9 from test;
COL RESULT RESULT_2
------------------------ ------------------------ ------------------------
1241 - ASGEF - AFZHE ASGEF - AFZHE ASGEF - AFZHE
1242 - ASGEF1 ASGEF1 ASGEF1
1243 - UJHAHAHG - AGHBNG UJHAHAHG - AGHBNG UJHAHAHG - AGHBNG
SQL>
【讨论】: