6

私は明らかな何かを見逃さなければなりません。

select CEILING(85/30) = 2

85/30 = 2.83333

値を3にします。

CEILING関数は私のために切り上げるべきではありませんか?

4

3 に答える 3

14

試す

SELECT CEILING(85.0/30)

そして比較のために

SELECT 85.0 / 30, 85 / 30

最初の例ではfloatを使用し、2番目の例ではintを使用しているため、天井関数がヒットする前に結果が丸められます。あなたがしていることは

SELECT CEILING(2) 

それよりも

SELECT CEILING(2.833333)
于 2013-02-26T19:58:54.350 に答える
3

に変更してください:

select CEILING(85/30.0)

INT / INTはINTを生成するため、85/30はそれを切り捨てます(FLOOR)。

于 2013-02-26T19:58:55.347 に答える
1

いくつかの型付きパラメーターを使用すると、データの入力方法についてそれほど心配する必要がなくなります。これがサムです

DECLARE @int_num integer
DECLARE @int_dem integer
DECLARE @dec_num decimal(18,0)
DECLARE @dec_dem decimal(18,0)

SET @int_num = 85
SET @int_dem = 30
SET @dec_num = 85
SET @dec_dem = 30

SELECT CEILING(@int_num / @int_dem) AS int_div, CEILING(@dec_num / @dec_dem) AS dec_div

int_div   |   dec_div
----------------------
2         |   3
于 2013-02-26T20:16:02.363 に答える