create or replace function format_number (_number numeric, decimals integer, decimal_symbol char, thousands_symbol char)
returns varchar as
$BODY$
declare
_value varchar;
_index integer;
_values varchar[2];
i integer;
pos integer;
begin
_value = round(_number, decimals)::varchar;
_index = strpos(_value, '.');
_values[0] = _value;
_values[1] = '';
if (_index > 0) then
_values[0] = substr(_value, 0, _index);
_values[1] = decimal_symbol || substr(_value, _index+1);
end if;
i = 0;
while (i < floor((length(_values[0]) - (i+1)) / 3)) loop
pos = length(_values[0]) - (4 * i+2);
_values[0] = substr(_values[0], 0, pos) || thousands_symbol || substr(_values[0], pos);
i = i+1;
end loop;
return _values[0] || _values[1];
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Exemplo de uso:
SELECT format_number(minha_coluna) FROM minha_tabela
Nenhum comentário:
Postar um comentário