Re: [SQL] round() and ||

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: [SQL] round() and ||
Дата
Msg-id 20312.948350080@sss.pgh.pa.us
обсуждение исходный текст
Ответ на round() and ||  ("Graeme Merrall" <gmerrall@email.com>)
Список pgsql-sql
"Graeme Merrall" <gmerrall@email.com> writes:
> SELECT round(services_cost,2) as test_field FROM services
> works fine but
> SELECT round(services_cost,2)::text as test_field FROM services
> as various other variations does not.

round() is actually a NUMERIC function --- implicitly, your float data
value is being converted to numeric, and then round() is applied.
The problem here is that there's no direct conversion from type numeric
to type text.  There should be one :-(

In the meantime, it seems to work to coerce the numeric result back
to float:

select float8(round(33.337,2))::text;
33.34

select float8(round(33.337,2)) || ' more';
33.34 more

This depends on the reconversion to float not introducing an
unreasonable amount of error --- but if you were willing to store the
data as float in the first place, I hope that will be acceptable.
        regards, tom lane


В списке pgsql-sql по дате отправления:

Предыдущее
От: "Graeme Merrall"
Дата:
Сообщение: round() and ||
Следующее
От: "T.I.P."
Дата:
Сообщение: inserting values into arrays