sql >> Databasteknik >  >> RDS >> Mysql

Stäng av vetenskaplig notation MySQL

Du letar förmodligen efter FORMAT eller ROUND funktion:

Använder FORMAT() , beroende på din lokal och dina specifika behov kanske du måste byta ut tusenavskiljaren :

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

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

Å andra sidan, ROUND() är en numerisk funktionen matar den bara ut siffror :

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

Se http://sqlfiddle.com/#!2/d41d8/17614 för att du lekte med det.

EDIT: Som du märkte är de två sista siffrorna avrundade till 00 . Det beror på DOUBLE precisionsgränser. Du måste komma ihåg den dubbeln är ungefärliga . Om du behöver exakta värden och/eller fler siffror än vad som är tillgängligt med 16-bitars precision dubbel, måste du förmodligen ändra kolumntypen till DECIMAL . Som standard DECIMAL har 10 siffror precision (10 bas 10 siffror). Du kan uttryckligen begära upp till 65 siffror.

Till exempel, om du behöver upp till 20 siffrors precision, skriver du något sånt:

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

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

Observera dock att saker och ting inte är det så enkelt. Om du väljer decimalkolumnen kan den tyst konvertera den till dubbel (eller stor ?) förlorar därmed den extra precisionen. Du kanske måste gjuta till strängen uttryckligen för att bevara full precision. Det betyder att du kan behöva hantera det på applikationsnivå.

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 för exempel.



  1. Paginering för att visa maxvärde och begränsa resten

  2. försöker ansluta till remote mysql från .asp-sidan

  3. Hur hittar man främmande nyckelberoenden i SQL Server?

  4. Hur man skickar en tabellvärderad parameter från C# till Oracles lagrade procedur