sql >> Base de Datos >  >> RDS >> Mysql

Desactivar notación científica MySQL

Probablemente esté buscando el FORMAT o ROUND función:

Usando FORMAT() , dependiendo de su configuración regional y sus necesidades específicas, es posible que deba reemplazar el separador de miles :

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

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

Por otro lado, ROUND() ser un numérico función, solo genera dígitos :

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

Consulte http://sqlfiddle.com/#!2/d41d8/17614 por jugar con eso.

EDITAR: Como notó, los dos últimos dígitos se redondean a 00 . Eso se debe a DOUBLE límites de precisión. Tienes que recordar que doble son aproximados . Si necesita valores precisos y/o más dígitos que los disponibles con la precisión de 16 bits de double, probablemente necesite cambiar el tipo de su columna a DECIMAL . Por defecto DECIMAL tiene una precisión de 10 dígitos (10 base 10 dígitos). Puede solicitar explícitamente hasta 65 dígitos.

Por ejemplo, si necesita una precisión de hasta 20 dígitos, escriba algo así:

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

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

Sin embargo, tenga en cuenta que las cosas no así de sencillo Seleccionar la columna decimal podría convertirla silenciosamente en doble (o bigint ?) perdiendo así la precisión adicional. Es posible que deba convertir explícitamente a una cadena para preservar la precisión total. Eso significa que es posible que tenga que lidiar con eso a nivel de aplicación.

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

Consulte http://sqlfiddle.com/#!2/d5f58/2 para ejemplos.