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
  • Вопрос задан
  • 872 просмотра
Пригласить эксперта
Ответы на вопрос 2
Delgus
@Delgus Автор вопроса
Есть такой вариант. но выглядит довольно стремно
select 
	case
		when c1 = 0 then ''
		else rtrim(rtrim(c1::numeric(16,2)::text,'0'),'.')
	end result
from newtable
Ответ написан
Комментировать
erge
@erge
Примус починяю
Еще так можно:
select 
  case
    when c1 = 0 then ''
    else rtrim(to_char (c1, 'FM9999999999999999D99'), '.')
  end result
from newtable


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

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

Похожие вопросы