Как отформатировать число в PL / SQL? - PullRequest
1 голос
/ 11 июля 2020

Мне нужно преобразовать некоторые числа в символы в соответствии со следующим logi c:

Input     => Expected Output  |   Current Output 
0         => 0                |   0.00  << Wrong
.1111     => 0.11             |   0.11
.1        => 0.1              |   0.10  << Wrong
1.111     => 1.11             |   1.11

В основном мой logi c должен иметь минимум символов. Только удобные символы, описывающие число.

Вот моя текущая функция

to_char(Value,'9999999999999990D99');

Как вы можете видеть, например, для 0, она возвращает 0,00

Кто-нибудь знаете, как решить эту проблему?

Спасибо.

1 Ответ

3 голосов
/ 11 июля 2020

Похоже, вам нужен этот:

rtrim(to_char(Value,'fm99999999999990D99'),'.')

Ie, вам нужно добавить 'fm' в маску формата и удалить '.': Пример:

select 
  to_char(Value,'9999999999999990D99') xx 
 ,to_char(Value,'fm9999999999999990D99') x_fm  -- just FM
 ,rtrim(to_char(Value,'fm99999999999990D99'),'.') x_fm_trim -- FM + rtrim
from xmltable('0, 0.1111, 0.1, 1.111' columns value number path '.');

XX                   X_FM                 X_FM_TRIM
-------------------- -------------------- ------------------
                0.00 0.                   0
                0.11 0.11                 0.11
                0.10 0.1                  0.1
                1.11 1.11                 1.11
...