从CLOB数据模式提取

时间:2019-01-31 19:40:56

标签: sql oracle

我的字符串数据如下:

“你好世界。从ABCD-123前往ACDE-234'。

我需要的值“ABCD-123到ACDE-234”从上面的字符串中提取。我打算用REGEXP_SUBSTR,但我想,以检查是否有任何其他方式或提取这些数据。谢谢。

2 个答案:

答案 0 :(得分:0)

一种选择是使用regexp_replace,如下面的示例

with t(str) as
(
 select 'Hello world. Travelling from ABCD-123 to ACDE-234' from dual
)
select 
       regexp_replace(str,'.*.\from(.*)','\1') as "Result String"
  from t;

 Result String
 --------------------
  ABCD-123 to ACDE-234

答案 1 :(得分:0)

以下查询将适用于所有3个字符串,但不确定性能,我找不到任何简单的方法:

select reverse(REGEXP_SUBSTR(reverse('Hello world. Travelling from ABCD-123 to ACDE-234'),'[^ ]+',1,3))||' '||
       reverse(REGEXP_SUBSTR(reverse('Hello world. Travelling from ABCD-123 to ACDE-234'),'[^ ]+',1,2))||' '||
       reverse(REGEXP_SUBSTR(reverse('Hello world. Travelling from ABCD-123 to ACDE-234'),'[^ ]+',1,1))
from dual;