Probabilmente stai cercando il FORMAT
o ROUND
funzione:
Usando FORMAT()
, a seconda delle tue località e le tue esigenze specifiche, potresti dover sostituire il separatore delle migliaia :
mysql> SELECT FORMAT(9.755046187483832e17,0);
975,504,618,748,383,200
mysql> SELECT REPLACE(FORMAT(9.755046187483832e17,0), ',','');
975504618748383200
D'altra parte, ROUND()
essendo un numerico funzione, emette solo cifre :
mysql> SELECT ROUND(9.755046187483832e17,0);
975504618748383200
Vedi http://sqlfiddle.com/#!2/d41d8/17614 per averci giocato.
MODIFICA: Come hai notato, le ultime due cifre vengono arrotondate a 00 . Ciò è dovuto a DOUBLE
limiti di precisione. Devi ricordare quel doppio sono approssimativi . Se hai bisogno di valori precisi e/o più cifre di quelle disponibili con la precisione a 16 bit di double, probabilmente devi cambiare il tipo della colonna in DECIMAL
. Per impostazione predefinita DECIMAL
ha una precisione di 10 cifre (10 base 10 cifre). Puoi richiedere esplicitamente fino a 65 cifre.
Ad esempio, se hai bisogno di una precisione fino a 20 cifre, scrivi qualcosa del genere:
CREATE TABLE tbl (myValue DECIMAL(20), ...
Vedi http://dev.mysql.com/ doc/refman/5.6/en/fixed-point-types.html
Tieni presente, tuttavia, che le cose non così semplice. La selezione della colonna decimale potrebbe convertirla silenziosamente in doppio (o bigint ?) perdendo così la precisione extra. Potrebbe essere necessario eseguire il cast in modo esplicito su string per preservare la piena precisione. Ciò significa che potresti doverlo occupare a livello di applicazione.
create table tbl (dblValue DOUBLE, decValue DECIMAL(20,0));
insert into tbl values (975504618748383289, 975504618748383289);
SELECT dblValue, decValue FROM tbl;
--> DBLVALUE DECVALUE
--> 975504618748383200 975504618748383200
SELECT CAST(dblValue AS CHAR), CAST(decValue AS CHAR) FROM tbl;
--> CAST(DBLVALUE AS CHAR) CAST(DECVALUE AS CHAR)
--> 9.755046187483832e17 975504618748383289
Vedi http://sqlfiddle.com/#!2/d5f58/2 per esempi.