Delgus
@Delgus

Как отформатировать результат чтоб он был без не значащих нулей?

Есть таблица newtable с одной колонкой c1 тип numeric(20,6)
5da47bdae8da8412752843.jpeg

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

Пока есть такой запрос
select 
	case
		when c1 = 0 then ''
		else c1::numeric(20,2)::text
	end result
from newtable


И этот запрос возвращает мне все в правильном виде, кроме того что возвращаются незначащие 0.
5da47e6ef3f44088040249.jpeg

я хочу получить 24, а не 24,00.
Возможно ли это используя средства форматирования postgres, и если возможно то как?

UPD. Есть такой вариант, но он просто обрезает 2 нуля. Поэтому для 300 я получу результат 3 вместо ожидаемых 300
select 
	case
		when c1 = 0 then ''
		else trim(trailing '.00' from c1::numeric(16,2)::text)
	end result
from newtable
  • Вопрос задан
  • 32 просмотра
Пригласить эксперта
Ответы на вопрос 2
Delgus
@Delgus Автор вопроса
Есть такой вариант. но выглядит довольно стремно
select 
	case
		when c1 = 0 then ''
		else rtrim(rtrim(c1::numeric(16,2)::text,'0'),'.')
	end result
from newtable
Ответ написан
Еще так можно:
select 
  case
    when c1 = 0 then ''
    else rtrim(to_char (c1, 'FM9999999999999999D99'), '.')
  end result
from newtable


см. Data Type Formatting Functions
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Home Credit Bank Москва
от 150 000 руб.
Хантфлоу Москва
от 60 000 до 80 000 руб.
Click Санкт-Петербург
от 180 000 до 250 000 руб.