Du leder sandsynligvis efter FORMAT
eller ROUND
funktion:
Brug af FORMAT()
, afhængigt af dit lokalitet og dine specifikke behov, skal du muligvis udskifte tusinder-separatoren :
mysql> SELECT FORMAT(9.755046187483832e17,0);
975,504,618,748,383,200
mysql> SELECT REPLACE(FORMAT(9.755046187483832e17,0), ',','');
975504618748383200
På den anden side, ROUND()
være et numerisk funktion, udsender den kun cifre :
mysql> SELECT ROUND(9.755046187483832e17,0);
975504618748383200
Se http://sqlfiddle.com/#!2/d41d8/17614 for at lege med det.
EDIT: Som du har bemærket, er de sidste to cifre afrundet til 00 . Det er på grund af DOUBLE
præcisionsgrænser. Du skal huske den dobbelt er omtrentlige . Hvis du har brug for præcise værdier og/eller flere cifre end tilgængelig med 16-bits præcision af dobbelt, skal du sandsynligvis ændre din kolonnetype til DECIMAL
. Som standard DECIMAL
har 10 cifre præcision (10 grundlag 10 cifre). Du kan eksplicit anmode om op til 65 cifre.
For eksempel, hvis du har brug for op til 20 cifre præcision, skriver du sådan noget:
CREATE TABLE tbl (myValue DECIMAL(20), ...
Se http://dev.mysql.com/ doc/refman/5.6/da/fixed-point-types.html
Bemærk dog, at tingene ikke er så enkelt. Hvis du vælger decimalkolonnen, konverteres den muligvis stille til dobbelt (eller bigt ?) og dermed miste den ekstra præcision. Du skal muligvis eksplicit kaste til streng for at bevare den fulde præcision. Det betyder, at du måske skal håndtere det på applikationsniveau.
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
Se http://sqlfiddle.com/#!2/d5f58/2 for eksempler.