Как отформатировать процент?

Мне нужна помощь в форматировании процентов. Моя первоначальная причина форматирования заключается в том, что я хочу отображать проценты около нуля как 0,05%, а не как 0,05%.

Итак, я сделал это:

IF (a.TOTAL <> 0 AND b.mkt <> 0) THEN
    v_perc := TO_CHAR(ROUND(100-( a.TOTAL*100/ b.mkt),2),'00.99') || '%';
END IF;

v_perc хранится как varchar2(50), но форматирование не всегда такое, как мне нужно.

Когда процент ниже 10%. Я получаю 08,52 или 00,35%. Но мне нужен формат, в котором на выходе получается 0,52%, 5,32%, 55%, 0%, 100%. Я пробовал с 000.999, но это даст 000.000%.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
3
0
4 121
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ты можешь использовать

TO_CHAR(<your_value>,'fm990D00','NLS_NUMERIC_CHARACTERS = ''.,''')

как ваша модель форматирования.

Он удовлетворяет ваши потребности вплоть до 100 (100%). Помимо процента, если вам нужно больше цифр в другом случае, таком как 11,115.54, вы можете преобразовать второй аргумент в 'fm999G990D00'.

Привет, у меня есть еще одно сомнение. Если мне нужно отобразить то же самое для столбца с числовым типом данных (удалив добавление части «%» в приведенной выше формуле), каким должен быть тип данных и формула, я попробовал десятичный (5, 2) и десятичный (5,4), но когда я удаляю формат точара, упомянутый в приведенном выше решении, и пробовал различные форматы, но это не дает решения, как указано выше, пожалуйста, помогите

karthik adiga 14.02.2019 06:41

@karthikadiga пытается объяснить, насколько я понял, всякий раз, когда <your_value> равно 8.5, вам нужно 'fm990D00' для преобразования в 8.50, 'fm990D0000' для преобразования в 8.5000. То есть для конвертации нужен to_char, иначе он стоит как 8.5.

Barbaros Özhan 14.02.2019 07:00

@karthikadiga хм Хорошо, вы можете объявить perc как number(10,2), number или float.

Barbaros Özhan 14.02.2019 12:33

Другие вопросы по теме