Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Deaktivieren Sie die wissenschaftliche Notation MySQL

Wahrscheinlich suchen Sie nach dem FORMAT oder ROUND Funktion:

Verwenden von FORMAT() , abhängig von Ihrem Gebietsschema und Ihren speziellen Anforderungen müssen Sie möglicherweise das Tausendertrennzeichen ersetzen :

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

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

Andererseits ROUND() eine Zahl sein Funktion, gibt sie nur Ziffern aus :

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

Siehe http://sqlfiddle.com/#!2/d41d8/17614 dafür, damit zu spielen.

BEARBEITEN: Wie Sie bemerkt haben, werden die letzten beiden Ziffern auf 00 gerundet . Das liegt an DOUBLE Präzisionsgrenzen. Dieses Double musst du dir merken sind ungefähr . Wenn Sie genaue Werte und/oder mehr Ziffern benötigen, als mit der 16-Bit-Präzision von double verfügbar sind, müssen Sie wahrscheinlich den Typ Ihrer Spalte in DECIMAL . Standardmäßig DECIMAL hat eine Genauigkeit von 10 Stellen (10 Basis 10 Ziffern). Sie können explizit bis zu 65 Ziffern anfordern.

Wenn Sie zum Beispiel eine Genauigkeit von bis zu 20 Stellen benötigen, schreiben Sie etwa so:

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

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

Bitte beachten Sie jedoch, dass die Dinge nicht sind so einfach. Die Auswahl der Dezimalspalte könnte sie stillschweigend in double umwandeln (oder bigint ?) wodurch die zusätzliche Präzision verloren geht. Möglicherweise müssen Sie explizit in eine Zeichenfolge umwandeln, um die volle Genauigkeit beizubehalten. Das bedeutet, dass Sie sich möglicherweise auf Anwendungsebene damit befassen müssen.

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

Siehe http://sqlfiddle.com/#!2/d5f58/2 für Beispiele.