postgres a funkce
Karel Zak
zakkr na zf.jcu.cz
Úterý Září 19 12:53:10 CEST 2000
On Tue, 19 Sep 2000, Vitek Burda (noname2) wrote:
> > ...podivejte se na CASE WHEN expr THEN expr [...] ELSE expr END
> > a hlavne na COALESCE():
> >
> > select COALESCE( sum(prachy*kurz), 0 ) as result from tabulka where ...
> >
>
> no jo, tohle slape hezky :))
>
> ale proc nejde to IFNULL ?? :) jen tak ze zvedavosti :)
Mozna proto, ze zadne IFNULL() neexistuje:-), existuje jen
NULLIF(input,value) a to dela presny opak toho co chcete, Jinak:
http://docs.linux.cz/soft/PostgreSQL/functions.htm
> > (BTW, jsou zeme (nemecko) kde se _pry_ u penez nesmi pouzivat float :-)
>
> :)))) to je vopruz a to jako naka vladni komise prochazi zdrojaky? :))))) - to
> byl ftip... :))))
Ono muze jit i o vasi "kapsu" pokud se vam 1000000x "zaokrouhli" nejaky
vypocet... napriklad budete vyplacet penize dle souctu dvou cisel:
test=# select 100000.987654321::float4 + 100000.987654321::float4;
?column?
----------
200002
(1 row)
zatimco "nezaokrouhlene":
test=# select 100000.987654321::numeric + 100000.987654321::numeric;
?column?
------------------
200001.975308642
(1 row)
Zopakujte to 1000000x a prijdete o tento rozdil:
test=# select (200002 - 200001.975308642) * 1000000;
?column?
------------------
24691.3580049295
^^^^^^^^^^^^^^^
VASICH Kc :-)))
Karel
Další informace o konferenci Databases