powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как грамотно распарсить строки и конвертнуть в number?
4 сообщений из 4, страница 1 из 1
Как грамотно распарсить строки и конвертнуть в number?
    #39420528
israelshamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.

Есть табличка tbl(col1,..coln, price, isaction).
Колонка price - varchar2
Колонка isaction - number

Требуется распарсить price и конвертнуть в number. Что - то не могу дать ума, как это сделать без тонны говнокода, прошу помощи.

В price могут лежать такие данные:
437,00|307,30
254,5|329,5
1 724
855,50
156.99
1906
724,00руб.
122900руб
55,90руб.46,90руб.
306.-

Если в поле price есть символ "|", то берем значение цены стоящее после него и в isaction пишем 1.
В случае с такими данными "55,90руб.46,90руб." всегда берем первое значение цены, в данном примере "55,90".

Пример:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with
  tbl
    as(
        select '437,00|307,30       ' price, '307,30' rslt  , 1    is_action from dual union all -- есть акция
        select '254,5|329,5          '        , '329,50'       , 1                 from dual union all -- есть акция
        select '1 724                   '        , '1724,00'     , null              from dual union all
        select '855,50                 '         , '855,50'      , null              from dual union all
        select '156.99                 '         , '156,99'      , null              from dual union all
        select '1906                    '         , '1906,00'    , null              from dual union all
        select '724,00руб.            '         , '724,00'     , null              from dual union all
        select '122900руб             '        , '122900,00' , null              from dual union all
        select '55,90руб.46,90руб. '        , '55,90'       , null              from dual union all
        select '306.-                    '        , '306,00'      , null              from dual)
  select * from tbl


Заранее извиняюсь за формулировку и форматирование текста.
...
Рейтинг: 0 / 0
Как грамотно распарсить строки и конвертнуть в number?
    #39420585
Гуанокод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
israelshamir,

Код: plsql
1.
2.
select trim(to_char(replace(replace(replace(nvl(substr(price,1,instr(price,'руб')-1),substr(price,instr(price,'|')+1,100)),'.',','),'-',''),' ',''),'99999999999999D99',
                           'NLS_NUMERIC_CHARACTERS='', ''')) from tbl
...
Рейтинг: 0 / 0
Как грамотно распарсить строки и конвертнуть в number?
    #39420601
Гуанокод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
israelshamir,
нельзя вернуть число с ",00", так что либо строкой "100,00", либо числом "100".
...
Рейтинг: 0 / 0
Как грамотно распарсить строки и конвертнуть в number?
    #39420604
israelshamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гуанокод,

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


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