Pravděpodobně hledáte FORMAT
nebo KOLA
funkce:
Pomocí FORMAT()
, v závislosti na místním prostředí a vašich konkrétních potřebách, možná budete muset vyměnit oddělovač tisíců :
mysql> SELECT FORMAT(9.755046187483832e17,0);975,504,618,748,383,200mysql> SELECT REPLACE(FORMAT(9,755046187483832'e17'97'05);803'617'97'05
Na druhé straně ROUND()
je numerický funkce, vydává pouze číslice :
mysql> SELECT ROUND(9,755046187483832e17,0);975504618748383200
Viz http://sqlfiddle.com/#!2/d41d8/17614 pro hraní si s tím.
UPRAVIT: Jak jste si všimli, poslední dvě číslice jsou zaokrouhleny na 00 . Důvodem je DOUBLE
meze přesnosti. Toto dvojité si musíte zapamatovat jsou přibližné . Pokud potřebujete přesné hodnoty a/nebo více číslic, než je k dispozici s 16bitovou přesností double, pravděpodobně budete muset změnit typ sloupce na DECIMALNÍ
. Ve výchozím nastavení DECIMAL
má přesnost 10 číslic (10 základ 10 číslice). Můžete explicitně požadovat až 65 číslic.
Pokud například potřebujete přesnost až 20 číslic, napište něco takového:
CREATE TABLE tbl (myValue DECIMAL(20), ...
Viz http://dev.mysql.com/ doc/refman/5.6/en/fixed-point-types.html
Upozorňujeme však, že věci nejsou tak jednoduché. Výběrem desetinného sloupce jej můžete v tichosti převést na dvojitý (nebo velký ?), čímž ztrácíte extra přesnost. Možná budete muset explicitně přetypovat na řetězec, abyste zachovali plnou přesnost. To znamená, že se s tím možná budete muset vypořádat na úrovni aplikace.
Vytvořit tabulku Tbl (DblValue Double, Decvalue Decimal (20,0)); vložení do hodnot TBL (975504618748383289, 975504618748383289); vyberte DblValue od Tbl; (dblValue AS CHAR), CAST(decValue AS CHAR) Z tbl;--> CAST(DBLVALUE AS CHAR) CAST(DECVALUE AS CHAR)--> 9,755046187483832e17 975504618748383289
Viz http://sqlfiddle.com/#!2/d5f58/2 pro příklady.