Regex извлекает положительное или отрицательное число из строки oracle - PullRequest
0 голосов
/ 28 июня 2018

Я изо всех сил пытаюсь найти решение следующей проблемы:

Предполагая, что символ имеет значения 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 голосов
/ 29 июня 2018

Для полноты ответа код Oracle для выполнения этой задачи следующий:

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

, что успешно приводит к числовому полю, поддерживающему знак полярности

select -512 from dual;
0 голосов
/ 28 июня 2018

Вы можете сопоставить необязательный символ (или использовать звездочку * вместо ? для соответствия нулю или более символов), за которым следует кавычка. Затем вы можете заменить это совпадение пустой строкой.

[a-z]?'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...