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