SQL Serverの10進数から末尾のゼロを取り除く

DECIMAL(9,6)`というカラムがあります。すなわち、999,123456のような値をサポートしています。

しかし、123,4567のようなデータを挿入すると123,456700になります。

これらのゼロを削除するにはどうすればよいでしょうか?

ソリューション

decimal(9,6)`は、コンマの右側に6桁の数字を格納します。 末尾のゼロを表示するかどうかは、フォーマット上の判断で、通常はクライアント側で実装されます。

しかし,SSMSはfloatを末尾のゼロなしでフォーマットするので,decimalfloatにキャストすることで末尾のゼロを取り除くことができます。

select 
    cast(123.4567 as DECIMAL(9,6))
,   cast(cast(123.4567 as DECIMAL(9,6)) as float)

と表示されます。

123.456700  123,4567

(私の小数点セパレータはカンマですが、SSMSは小数点をドットでフォーマットします。 どうやら既知の問題のようです)。

解説 (5)
SELECT REVERSE(ROUND(REVERSE(2.5500),1))

プリント:

2.55
解説 (6)

試してみてください。

select Cast( Cast( (ROUND( 35.457514 , 2) *100) as Int) as float ) /100
解説 (1)