Re: SQL error: function round(double precision, integer) does not

Поиск
Список
Период
Сортировка
От Christoph Haller
Тема Re: SQL error: function round(double precision, integer) does not
Дата
Msg-id 42231EB6.9F6D20F3@rodos.fzk.de
обсуждение исходный текст
Ответ на SQL error: function round(double precision, integer) does not exist  (TJ O'Donnell <tjo@acm.org>)
Список pgsql-sql
TJ O'Donnell wrote:
> 
> I received the following error when executing a SQL statement:
> 
> SQL error:
> ERROR:  function round(double precision, integer) does not exist
> 
> In statement:
> 
> select id,smiles,smarts,parameter,oe_count_matches(smiles,smarts) as count,
>   round((parameter*oe_count_matches(smiles,smarts)),2) as psa,tpsa(smiles) as ctpsa,tpsa
>   from structure,tpsa
>   where id < 237610
>   and oe_count_matches(smiles,smarts) > 0
> 
> order by id;
> 
> The functions described at:
> http://www.postgresql.org/docs/7.4/static/functions-math.html
> show that round(numeric,int) should work ok.
> If I use round() without a second argument, it works OK, but
> this gives a loss of precision which I do not want.
> 
> Can anyone help me with this?
> 
> Thanks,
> TJ
> 

And round(numeric,int) does work ok. 
The error message is telling you 
there is double precision argument where a numeric 
is expected. 
And with 7.4.5 it says in addition 
HINT:  No function matches the given name and argument types. 
You may need to add explicit type casts.

Try 
round((parameter*oe_count_matches(smiles,smarts))::numeric,2) 

Works for me with double precision arguments. 

Regards, Christoph


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

Предыдущее
От: "Joel Fradkin"
Дата:
Сообщение: Re: diference in dates in minutes
Следующее
От: TJ O'Donnell
Дата:
Сообщение: Re: SQL error: function round(double precision, integer) does