正则表达式从字符串oracle

时间:2018-06-28 16:42:04

标签: regex oracle

我正在努力寻找以下问题的解决方案:

假设字符值为512a,-1230b,-2和2。
可以通过以下查询将其获取到表中:

with my_input_values as (
select '512a' my_val from dual union select '-1230b' my_val from dual union select '2' my_val from dual union select '-2' my_val  from dual
) 
select * from my_input_values;

我正在尝试构建正则表达式,该正则表达式从每个值中提取保留正号或负号的数字。

预期结果为以下数值:512,-1230、2和-2。
可以通过以下查询将其获取到表中:

with result as (
    select 512 my_val from dual union select -1230 my_val from dual union select 2 my_val from dual union select -2 my_val from dual
)
select * from result;

2 个答案:

答案 0 :(得分:2)

您可以匹配一个可选字符(或使用星号*而不是?来匹配零个或多个字符),然后加上引号。然后,您可以将匹配项替换为空字符串。

[a-z]?'

答案 1 :(得分:0)

为完整起见,用于完成此任务的Oracle代码如下:

select regexp_replace('-asd51assaddasd2a', '[a-z]?') from dual;

成功导致数字字段保持极性符号

select -512 from dual;