powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Получить значения из слабо-форматированной строки
3 сообщений из 3, страница 1 из 1
Получить значения из слабо-форматированной строки
    #39875329
SQL-Talker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно из строки типа:
Код: plaintext
Расчеты по Договору N1111 от 01.01.2011г. оплата:10101010.01 пеня:111.11  возврат:12121212,01 пеня:-222.11...
Получить значения полей "пеня"

На данный момент имею такой вариант
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with t as
(
    select 'Расчеты по Договору N1111 от 01.01.2011г. оплата:10101010.01 пеня:111.11  возврат:12121212,01 пеня:-222.11 еще какой-то 11 текст 22' as str from dual union all
    select 'Расчеты по Договору N2222 от 02.02.2012г. оплата:20202020.02 пеня:        возврат:23232323.02 пеня:-222.22 еще какой-то 11 текст 22' as str from dual
)
select
    regexp_substr(t.str, '(пеня:\D*\s*(\S+)\D)', 1, 1, 'i', 2) fine_pay,
    regexp_substr(t.str, '(пеня:\D*\s*(\S+)\D)', 1, 2, 'i', 2) fine_ret
from
    t


Но тут есть две проблемы - если значение вообще не указано, то подхватывается следующее по тексту число и теряются знаки (-):
FINE_PAY FINE_RET 111.11 222.1123232323.02 222.22
Из условий - не использовать вложенные вызовы regexp_substr
Как это побороть?
...
Рейтинг: 0 / 0
Получить значения из слабо-форматированной строки
    #39875335
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
    regexp_substr(t.str, 'пеня:([+-]*\d+[.]\d+)?', 1, 1, 'i', 1) fine_pay,
    regexp_substr(t.str, 'пеня:([+-]*\d+[.]\d+)?', 1, 2, 'i', 1) fine_ret
...
Рейтинг: 0 / 0
Получить значения из слабо-форматированной строки
    #39875361
SQL-Talker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,

Работает супер.
Символ "?" тут работает как обычный квантификатор "0 или 1" ?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Получить значения из слабо-форматированной строки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]