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.