Horváth Ágoston János
2004-11-12 14:10:57 UTC
Üdv!
Elég összetett problémába sikerült belefutnom. A következő a helyzet:
van egy mysql 4.0 (de a 4.1 is ugyanezt produkálja), ahol ha kiadom
mysql konzolból a következő parancsokat, ezt kapom:
create table test (valami decimal(5,2));
insert into test values (5.55);
insert into test values (5.555);
insert into test values (5.556);
select * from test;
+--------+
| valami |
+--------+
| 5.55 |
| 5.55 |
| 5.56 |
+--------+
Látható, hogy a kerekítés nem egészen működik, de legalábbis elég
furán. Ezzel eddig semmi gond sincs, a google egy egész halom oldalt
dob ki, ahol hasonló gondokat reportoltak. A gond ott kezdődik, hogy a
mysql team válasza az, hogy ők simán meghívják a libc round()
függvényét, így implementáció-függő, hogy mi fog történni.
Ez eddig OK, nyilván ez a leggyorsabb, de attól még hibás. Ráadásul,
én a mysql.com -ról letöltött, általuk statikusra fordított és
tesztelt bináris pakkot használom, szóval még csak azt se lehet
mondani, hogy nálam lenne a hiba.
Tehát: tud-e valaki olyan lehetőséget, ami a libc round() működését
befolyásolná, vagy bármi más módon lehetővé tenné, hogy kicsikarjak
normális kerekítést a mysql-ből? Bármilyen megoldás érdekel, kivéve a
truncate, floor és ceiling, valamint egyéb SQL-függvények, mert
iszonyat kényelmetlen -és a projektünk jelenlegi állapotában
kivitelezhetetlen- minden queryt felülvizsgálni.
Kösz,
Horváth Ágoston
Elég összetett problémába sikerült belefutnom. A következő a helyzet:
van egy mysql 4.0 (de a 4.1 is ugyanezt produkálja), ahol ha kiadom
mysql konzolból a következő parancsokat, ezt kapom:
create table test (valami decimal(5,2));
insert into test values (5.55);
insert into test values (5.555);
insert into test values (5.556);
select * from test;
+--------+
| valami |
+--------+
| 5.55 |
| 5.55 |
| 5.56 |
+--------+
Látható, hogy a kerekítés nem egészen működik, de legalábbis elég
furán. Ezzel eddig semmi gond sincs, a google egy egész halom oldalt
dob ki, ahol hasonló gondokat reportoltak. A gond ott kezdődik, hogy a
mysql team válasza az, hogy ők simán meghívják a libc round()
függvényét, így implementáció-függő, hogy mi fog történni.
Ez eddig OK, nyilván ez a leggyorsabb, de attól még hibás. Ráadásul,
én a mysql.com -ról letöltött, általuk statikusra fordított és
tesztelt bináris pakkot használom, szóval még csak azt se lehet
mondani, hogy nálam lenne a hiba.
Tehát: tud-e valaki olyan lehetőséget, ami a libc round() működését
befolyásolná, vagy bármi más módon lehetővé tenné, hogy kicsikarjak
normális kerekítést a mysql-ből? Bármilyen megoldás érdekel, kivéve a
truncate, floor és ceiling, valamint egyéb SQL-függvények, mert
iszonyat kényelmetlen -és a projektünk jelenlegi állapotában
kivitelezhetetlen- minden queryt felülvizsgálni.
Kösz,
Horváth Ágoston