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

Поиск
Список
Период
Сортировка
От TJ O'Donnell
Тема Re: SQL error: function round(double precision, integer) does
Дата
Msg-id 42232D58.90307@acm.org
обсуждение исходный текст
Ответ на SQL error: function round(double precision, integer) does not exist  (TJ O'Donnell <tjo@acm.org>)
Список pgsql-sql
Thanks everyone.  Your tips about casting my arg to round()
as ::numeric worked just fine.  I guess I was surprised
that plpgsql didn't that on it's own!  I'm used to too
many forgiving c compilers, and such.

TJ

Christoph Haller wrote:
> 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 по дате отправления:

Предыдущее
От: Bruno Wolff III
Дата:
Сообщение: Re: diference in dates in minutes
Следующее
От: "Joel Fradkin"
Дата:
Сообщение: Re: diference in dates in minutes