sql >> Databáze >  >> RDS >> Mysql

Vypněte vědeckou notaci MySQL

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.



  1. Jak vložit řetězec, který obsahuje &

  2. MySQL vs PostgreSQL? Které si mám vybrat pro svůj projekt Django?

  3. Některé JAKÉKOLI Agregované transformace jsou rozbité

  4. Zkontrolujte platný název sloupce SQL