Маска формата Oracle to_char, покрывающая регистр 0.1 -> .1 - PullRequest
0 голосов
/ 08 ноября 2018

Итак, у меня следующая ситуация:

create table test1(c1 number, c2 varchar2(250 char));
/
insert into test1 values(0.11, 0.11);
/
select * from test1;

даст мне:

C1       C2
0.11    .11

Я хочу сохранить число наподобие 0.11, как есть, без удаления 0. Проблема в том, что в этом столбце varchar2 я также могу хранить значения, такие как "1.123", "0.123456789", "test123". Так что в основном это может быть число с любой точностью или даже строка.
Я думаю, что мой единственный шанс - использовать параметр "fmt" to_char, но я не могу найти маску, которая могла бы решить любое заданное число цифр и строк

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Нашли решение с помощью регулярных выражений:

select regexp_replace('.11115', '^(\.\d+)$', '0\1') from dual

Поиск выполняется с точки и начинается только с цифр. Не потерпит крах, если вы передадите ему строку, а точность не имеет значения

0 голосов
/ 08 ноября 2018

Вы можете попробовать ниже, используя to_char () и fmt как '90D90'

create table test1(c1 number, c2 varchar2(250 char))END;

/

insert into test1 values(0.11, to_char(0.11, '90D90'))END;

/

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