我正在努力寻找以下问题的解决方案:
假设字符值为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;
答案 0 :(得分:2)
您可以匹配一个可选字符(或使用星号*
而不是?
来匹配零个或多个字符),然后加上引号。然后,您可以将匹配项替换为空字符串。
答案 1 :(得分:0)
为完整起见,用于完成此任务的Oracle代码如下:
select regexp_replace('-asd51assaddasd2a', '[a-z]?') from dual;
成功导致数字字段保持极性符号
select -512 from dual;