Mysql
 sql >> Database >  >> RDS >> Mysql

Disattiva la notazione scientifica MySQL

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.