3

ばかげた質問をして申し訳ありませんが、これは私を困惑させました。

SELECT 
81234 / 160000 * 100                    AS Try1,
CAST((81234 / 160000 * 100) AS float)   AS Try2

答えは 50.77125 ですが、どちらの値もゼロを返します。どうしたの?

ありがとう、

4

7 に答える 7

7

小数点を使用してみてください。

何かのようなもの

SELECT 
81234 / 160000 * 100                    AS Try1,
CAST((81234 / 160000 * 100) AS float)   AS Try2,
81234. / 160000. * 100.                    AS Try3

SQL フィドルのデモ

/ (除算)から(Transact-SQL)

整数の被除数が整数の除数で除算される場合、結果は、結果の小数部分が切り捨てられた整数になります。

于 2013-07-23T12:14:11.143 に答える
3

あなたはintによる除算を実装しています

これを試して:

SELECT 
cast(81234 as float) / cast(160000 as float) * 100

また

SELECT 
81234.00 / 160000.00 * 100
于 2013-07-23T12:14:48.100 に答える
2

これを試して

SELECT 
81234.00 / 160000 * 100                    AS Try1,
CAST((81234.00 / 160000 * 100) AS float)   AS Try2

整数と見なされる数値を除算しています。したがって、2 つの小数を追加することにより、10 進数に変換され、小数が表示されます。

あなたの場合、除算 81234 / 160000 は 0 になり、100 を掛けても 0 のままです。

于 2013-07-23T12:14:12.043 に答える
1

以下のようにクエリを変更します

SELECT 
 81234.00 / 160000 * 100                    AS Try1,
 CAST((81234.00 / 160000 * 100) AS float)   AS Try2

** 81234.00 / 160000 は手動で sql を介して 0.5077125 を返します。整数除算と見なされるため、値 0 が返されます。

于 2013-07-23T12:19:17.593 に答える