Mysql
 sql >> Base de données >  >> RDS >> Mysql

Désactiver la notation scientifique MySQL

Vous recherchez probablement le FORMAT ou ROUND fonction :

Utilisation de FORMAT() , en fonction de vos paramètres régionaux et vos besoins spécifiques, vous devrez peut-être remplacer le séparateur de milliers :

mysql> SELECT FORMAT(9.755046187483832e17,0);
975,504,618,748,383,200

mysql> SELECT REPLACE(FORMAT(9.755046187483832e17,0), ',','');
975504618748383200

Par contre, ROUND() étant un numérique fonction, elle n'affiche que des chiffres :

mysql> SELECT ROUND(9.755046187483832e17,0);
975504618748383200

Voir http://sqlfiddle.com/#!2/d41d8/17614 pour jouer avec ça.

MODIF : Comme vous l'avez remarqué, les deux derniers chiffres sont arrondis à 00 . C'est à cause de DOUBLE limites de précision. Vous devez vous rappeler que double sont approximatifs . Si vous avez besoin de valeurs précises et/ou de plus de chiffres que ceux disponibles avec la précision de 16 bits de double, vous devrez probablement changer le type de votre colonne en DECIMAL . Par défaut DECIMAL a une précision de 10 chiffres (10 base 10 chiffres). Vous pouvez demander explicitement jusqu'à 65 chiffres.

Par exemple, si vous avez besoin d'une précision allant jusqu'à 20 chiffres, vous écrivez quelque chose comme ça :

CREATE TABLE tbl (myValue DECIMAL(20), ...

Voir http://dev.mysql.com/ doc/refman/5.6/en/fixed-point-types.html

Veuillez noter cependant que les choses ne sont pas c'est simple. La sélection de la colonne décimale peut la convertir silencieusement en double (ou bigint ?) perdant ainsi la précision supplémentaire. Vous devrez peut-être transtyper explicitement en chaîne afin de préserver la précision totale. Cela signifie que vous devrez peut-être gérer cela au niveau de l'application.

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

Voir http://sqlfiddle.com/#!2/d5f58/2 pour des exemples.