2014-09-11 89 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