sql >> Database teknologi >  >> RDS >> Mysql

Slå videnskabelig notation MySQL fra

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.



  1. Sammenligning af Entity Framework-kompatible udbydere til Oracle?

  2. Overtrædelse af integritetsbegrænsning:1452 Kan ikke tilføje eller opdatere en underordnet række:

  3. MySQL groupwise MAX() returnerer uventede resultater

  4. Sådan bruger du flere databaser dynamisk til en model i CakePHP