2017-09-21 6 views
1

私はこのような文を入力します。Firebirdの更新にtableAセットA = 10月3日6と小数

update tableA 
    set tableA.a = 10/3 

書き込まれた値が3.33

であるがしかし、私は6小数な長さを必要とする(フィールドはdoubleです精度)。 私も試してみました:

update tableA 
    set tableA.a = round(10/3, 6) 

とも:

update tableA 
    set tableA.a = cast(10/3 AS DECIMAL(17, 6)) 

DB に書かれた同じ値(3.33)を取得取得するには助けてくださいを右命令を書くこと3.333333

+0

これは「恒久的」にするには、データ型を変更? –

+0

私はこれをFirebird 3で再現することはできません。方言3が整数分裂を適用し、方言1のデータベースでは3.33333 ...が得られるので、方言3データベースでは期待通りに3が得られます。これを再現するために必要なすべての情報を提供してください:Firebirdのバージョン、データベースの方言、正確なDDL、これを再現するための正確なコード、および3.33を示す結論に至る方法(いくつかのGUIツールは値を表示するときに自由を取る)回避策として '10/3e0'を使用してください。 –

答えて

3

ます表示されている値とデータベースストレージを混同しています。小数点以下6桁を表示する場合は、値を照会するときに

select cast(a as decimal(17, 6)) 
from tablea; 

とクエリします。列 `A`とどのようなデータベースの方言があるのデータ型は何

alter table tableA alter column a type decimal(17, 6); 
+0

ありがとうが、列のデータ型はokです。それは6小数の他の値を持っています。 – Carlos

+1

@carlos - 浮動小数点値を必要な形式の書式付き文字列に変換する方法 –

関連する問題