2014-10-11 5 views
1

У меня есть поплавок, который находится между 0 и 1, например 0.342 или 0.34 и т. Д. Мне нужно, чтобы это было отформатировано так: .XXX, всегда трехзначная точность (с конечными нулями) и никогда не ведущий нуль (. до десятичного у меня есть это:.?postgreql to_char форматирование поплавка

CREATE OR REPLACE FUNCTION format_float(real) RETURNS text AS 
$BODY$ 

BEGIN 
return to_char($1, '9.999'); 
END; 

$BODY$ 
LANGUAGE plpgsql VOLATILE COST 100; 

но подушечки значения с ведущими пробелами Как я могу получить эту работу я попытался '.999' в to_char вызове, но это не работает, либо, что дает .###

ответ

0

Был бы простой перевод на an arbitrary precision number Работа для вас?

SELECT 0.3456::numeric(4,3); 

же внутри функции (кстати, лучше использовать SQL функции, а оптимизатор может встраивать их):

CREATE FUNCTION ff(float) RETURNS numeric(4,3) AS $ff$ 
    SELECT $1::numeric(4,3); 
$ff$ LANGUAGE sql; 
+0

Да, это будет делать. Гораздо проще :) – Wells