CEILING函数如何用加减乘除实现,只允许用+ - * / 来实现  比如有个变量@xx,@xx=2.23  如何得出3的结果

解决方案 »

  1.   

    DECLARE @i DECIMAL(4,2)
    SET @i = 2.23SELECT CASE WHEN @i >0 THEN CONVERT(INT,@i+1) ELSE CONVERT(INT,@i) END --3???
      

  2.   

    declare @xx float
    set @xx = 2.23declare @count int
    set @count = 0
    while (@xx - 1 > 0)
    begin
    set @count = @count + 1
    set @xx = @xx - 1
    end
    set @count = @count +  1
    select @count
    /*
    (无列名)
    3
    */
      

  3.   

    select cast(2.23+0.99 as int)
      

  4.   


    select cast(2.23+0.99 as int)/*
    3
      

  5.   


    select (2.23 + 0.99)*100/100
      

  6.   


    这个在sql里出来还是小数
      

  7.   


    select ((2.23 + 0.99)*100 - (2.23 + 0.99)*100%100)/100
      

  8.   

    服务器: 消息 206,级别 16,状态 2,行 1
    操作数类型冲突: int 与 void type 不兼容
    服务器: 消息 8117,级别 16,状态 1,行 1
    操作数数据类型 numeric 无效(运算符 modulo)。
      

  9.   

    DECLARE @i DECIMAL(4,2)
    DECLARE @j INT
    SET @i = 2.23SELECT @j = CASE WHEN @i >0 THEN @i+1 ELSE @i END 
    PRINT @j?case 能用否?
      

  10.   

    中间变量不可以用int型的,可以是decimail的,你这个@j变量就相当于取整了,case可以用
      

  11.   

    最后的结果应该是一个decimal的(即3.00)
      

  12.   


    DECLARE @i decimal(4,2)
    SET @i=2.33
    declare @j decimal(4,2)
    set @j=0.67
    select @i+@j
    /*
    3.00
    */--?????这个意思?
      

  13.   


    DECLARE @i decimal(4,2)
    SET @i=2.33 --结果为3
    --set @i=2.00 --结果为2declare @k int
    set @k=0
    while @k<=@i
    begin
    set @k=@k+1
    end
    if(@k-@i=1)
    set @k=@k-1select @k
      

  14.   


    --中间变量不定义为int
    --改一下
    DECLARE @i decimal(4,2)
    SET @i=2.33 --结果为3.00
    --set @i=2.00 --结果为2.00declare @k decimal(4,2);set @k=0
    while @k<=@i
    begin
         set @k=@k+1
    end
    if(@k-@i=1) set @k=@k-1
    select @k
      

  15.   

     declare @i decimal(4,2)
     declare @v int
     set @i=2.23
     set @v=(@i+0.99)*100
     select @v/100
      

  16.   

    DECLARE @i decimal(4,2)
    SET @i=2.33 
    select @i-(@i-2)+1
    /*
    3.00
    */