postgresql - int/int
annakin - 25-06-2007 00:00
postgresql - int/int
Witam
Czy w postgresql wynik dzielenia int przez int zawsze jest konwertowany automatycznie do int? Pisze funkcje w plpgsql funkcję która miedzy innymi dzieli dwie wartości całkowite przez siebie i np. dla 7/4 dostaje 1 a nie tak jakbym chciał 1.75. Zmienna która przechowuje wynik jest zadeklarowana jako numeric.
Czy ratunkiem jest tylko zmiana typów danych dzielnej i dzielnika na numeric?
-- annakin
Rafal Franczak - 25-06-2007 00:00
annakin napisał(a): > Witam > > Czy w postgresql wynik dzielenia int przez int zawsze jest konwertowany > automatycznie do int? > Pisze funkcje w plpgsql funkcję która miedzy innymi dzieli dwie wartości > całkowite przez siebie i np. dla 7/4 dostaje 1 a nie tak jakbym chciał > 1.75. Zmienna która przechowuje wynik jest zadeklarowana jako numeric. > > Czy ratunkiem jest tylko zmiana typów danych dzielnej i dzielnika na > numeric? > Dla int x int y numeric n
n = (1.0*x)/y
Jeżeli jeden z argumentów jest numeric to nie będzie konwertował do int.
Rafał
annakin - 25-06-2007 00:00
Rafal Franczak pisze: > annakin napisał(a): >> Witam >> >> Czy w postgresql wynik dzielenia int przez int zawsze jest >> konwertowany automatycznie do int? >> Pisze funkcje w plpgsql funkcję która miedzy innymi dzieli dwie >> wartości całkowite przez siebie i np. dla 7/4 dostaje 1 a nie tak >> jakbym chciał 1.75. Zmienna która przechowuje wynik jest zadeklarowana >> jako numeric. >> >> Czy ratunkiem jest tylko zmiana typów danych dzielnej i dzielnika na >> numeric? >> > Dla > int x > int y > numeric n > > n = (1.0*x)/y > > Jeżeli jeden z argumentów jest numeric to nie będzie konwertował do int.
o to właśnie mi chodziło. Dziękuje.
-- annakin
Robert Osowiecki - 26-06-2007 00:00
Rafal Franczak napisał(a): > n = (1.0*x)/y
Ale po co takie sztuczki: Postgres to i tak wewnętrznie zamieni na coś w rodzaju:
n := ('1.0'::numeric*x)/y
Prościej już jawnie przekonwertować typ:
n := x::numeric/y;
R.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?=
postgresql Select count(*) czy raczej Select count(ID)
[PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?=
[postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?=
[postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?=
[PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?=
Postgres - replikcja master-master
Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL]
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
=?ISO-8859-2?Q?[psql]_Polskie_t=B3umaczenie_?= =?ISO-8859-2?Q?licencji_BSD_dla_PostgreSQL=3F?=
zanotowane.pldoc.pisz.plpdf.pisz.plfantazia.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|