2014-09-11 88 views
-1

我有一个字符串{1:F01BPHKPLPKXXX0000000000},我需要使用regex_substr从中提取1:F01BPHKPLPKXXX0000000000。你能帮我解决这个问题吗?在分隔符内提取字符串

+1

嗨,欢迎来到堆栈溢出!你有没有尝试过任何东西?请告诉我们代码。 – Stefan 2014-09-11 10:36:22

回答

0

这个怎么样:

select regexp_replace('{1:F01BPHKPLPKXXX0000000000}', '{(.*)}', '\1') 
from dual 

它以括号之间的所有内容并输出。

这可能是如果你问我要容易得多,使用substr

select substr(var, 2, length(var)-2) 
from (select '{1:F01BPHKPLPKXXX0000000000}' var from dual) 
1

为什么使用REGEXP_SUBSTR?用手枪杀死一只老鼠?

你只需要TRIM这些大括号。

SQL> WITH DATA AS(
    2 SELECT q'[{1:F01BPHKPLPKXXX0000000000}]' STR FROM DUAL) 
    3 select rtrim(ltrim(str,'{'),'}') str from data 
    4/

STR 
-------------------------- 
1:F01BPHKPLPKXXX0000000000 

SQL> 
0

尝试以下操作:

SELECT REGEXP_SUBSTR('{1:F01BPHKPLPKXXX0000000000}', '[^{].*[^}]') FROM DUAL 

分享和享受。

0

我只会使用regexp_replace。我只是用交替操作,|,让我问开头,以取代{(使用锚^)和}在字符串的结尾(使用锚$)。

[email protected]> WITH a_tab AS 
    2 (SELECT '{1:F01BPHKPLPKXXX0000000000}' a_col FROM dual 
    3 ) 
    4 SELECT regexp_replace (a_col, '^{|}$') FROM a_tab 
    5/

REGEXP_REPLACE(A_COL,'^{|}$') 
========================== 
1:F01BPHKPLPKXXX0000000000