在分隔符内提取字符串

时间:2014-09-11 10:17:14

标签: sql regex oracle plsql

我有一个字符串{1:F01BPHKPLPKXXX0000000000},我需要使用1:F01BPHKPLPKXXX0000000000从中提取regex_substr。你能帮帮我吗?

4 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

这个怎么样:

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

它包括括号和输出之间的所有内容。

如果您使用substr

问我,这会更容易
select substr(var, 2, length(var)-2)
from   (select '{1:F01BPHKPLPKXXX0000000000}' var from dual)

答案 2 :(得分:0)

尝试以下方法:

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

分享并享受。

答案 3 :(得分:0)

我只想使用regexp_replace。我只使用交替运算符|,因此我要求在字符串末尾替换{(使用锚点^)和}(使用锚$)。

SCOTT@dev> 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