powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Число из строчного вида с произвольными разделителями преобразовать в NUMBER
5 сообщений из 5, страница 1 из 1
Число из строчного вида с произвольными разделителями преобразовать в NUMBER
    #39874805
SQL-Talker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть задача по преобразованию числа из строчного вида с произвольными десятичными и тысячными разделителями в NUMBER
Примеры:
Код: plaintext
1.
2.
Сумма: 1,234,567.89 => 1234567.89
Сумма 1'234'567-89 => 1234567.89
Сумма - 1 234 567,89 => 1234567.89

ну и так далее

Сейчас я это делаю в несколько шагов - выделяю десятичную остальную часть (последние две цифры), отбрасываю все не-цифры, склеиваю обе части поместив между ними точку (или иной заданный разделитель).

Это работает, но достаточно громоздко. Возможно есть варианты сделать это красивее с помощью регулярных выражений, но мои познания в этой сфере поверхностны.

Может кто подскажет?
...
Рейтинг: 0 / 0
Число из строчного вида с произвольными разделителями преобразовать в NUMBER
    #39874816
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
аксиома:

бардак компьютеризировать невозможно
...
Рейтинг: 0 / 0
Число из строчного вида с произвольными разделителями преобразовать в NUMBER
    #39874826
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsevаксиома:

бардак компьютеризировать невозможноСледствие: Говнокод будет оговнокодиествовать.
...
Рейтинг: 0 / 0
Число из строчного вида с произвольными разделителями преобразовать в NUMBER
    #39874832
Да ну
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL-Talkerвыделяю десятичную остальную часть (последние две цифры), отбрасываю все не-цифры, склеиваю обе части поместив между ними точку
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
with q(s) as (
  select  q'[1,234,567.89']'   from dual union all
  select  q'[1'234'567-89']'   from dual union all
  select  q'[- 1 234 567,89']' from dual
) 
select q.*
  ,translate (s,'0'||translate (s,'x0123456789','x'),'0')/100 way1
  ,regexp_replace(s,'[^0-9]+', '')/100 way2
from q
...
Рейтинг: 0 / 0
Число из строчного вида с произвольными разделителями преобразовать в NUMBER
    #39875048
SQL-Talker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ну,

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


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