sql >> データベース >  >> RDS >> Mysql

科学的記数法MySQLをオフにします

    おそらくFORMAT または​​ ROUND 機能:

    FORMAT()の使用 、ロケールによって異なります また、特定のニーズに応じて、数千のセパレーターを交換する必要がある場合があります。 :

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

    一方、ROUND() 数値であること 関数、それはのみを出力します :

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

    http://sqlfiddle.com/#!2/d41d8/17614 を参照してください。 それで遊んでくれて。

    編集: お気づきのとおり、最後の2桁は 00に丸められます。 。これは、 DOUBLEが原因です。 精度の限界。 double おおよそ 。正確な値や16ビット精度のdoubleで利用できるよりも多くの桁が必要な場合は、列のタイプを DECIMAL 。デフォルトでは、DECIMAL 精度は10桁です(10 base 10 数字)。最大65桁を明示的にリクエストできます。

    たとえば、最大20桁の精度が必要な場合は、次のように記述します。

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

    http://dev.mysql.com/を参照してください。 doc / refman / 5.6 / en / fixed-point-types.html

    ただし、物事はではないことに注意してください とても簡単です。 10進数の列を選択すると、サイレントに doubleに変換される場合があります。 (または bigint ?)したがって、余分な精度が失われます。完全な精度を維持するために、文字列に明示的にキャストする必要がある場合があります。つまり、アプリケーションレベルで対処する必要があるかもしれません。

    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
    

    http://sqlfiddle.com/#!2/d5f58/2 を参照してください。 例として。



    1. 目的の値の代わりにリソースID#8を返すMysqlクエリ

    2. ルートパスワードをnullに設定する方法

    3. AWSGlueでMySQLテーブルを上書きする

    4. 列を行に転置する