DECLARE @i DECIMAL(4,2) SET @i = 2.23SELECT CASE WHEN @i >0 THEN CONVERT(INT,@i+1) ELSE CONVERT(INT,@i) END --3???
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 */
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 能用否?
中间变量不可以用int型的,可以是decimail的,你这个@j变量就相当于取整了,case可以用
最后的结果应该是一个decimal的(即3.00)
DECLARE @i decimal(4,2) SET @i=2.33 declare @j decimal(4,2) set @j=0.67 select @i+@j /* 3.00 */--?????这个意思?
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
--中间变量不定义为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
declare @i decimal(4,2) declare @v int set @i=2.23 set @v=(@i+0.99)*100 select @v/100
DECLARE @i decimal(4,2) SET @i=2.33 select @i-(@i-2)+1 /* 3.00 */
SET @i = 2.23SELECT CASE WHEN @i >0 THEN CONVERT(INT,@i+1) ELSE CONVERT(INT,@i) END --3???
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
*/
select cast(2.23+0.99 as int)/*
3
select (2.23 + 0.99)*100/100
这个在sql里出来还是小数
select ((2.23 + 0.99)*100 - (2.23 + 0.99)*100%100)/100
操作数类型冲突: int 与 void type 不兼容
服务器: 消息 8117,级别 16,状态 1,行 1
操作数数据类型 numeric 无效(运算符 modulo)。
DECLARE @j INT
SET @i = 2.23SELECT @j = CASE WHEN @i >0 THEN @i+1 ELSE @i END
PRINT @j?case 能用否?
DECLARE @i decimal(4,2)
SET @i=2.33
declare @j decimal(4,2)
set @j=0.67
select @i+@j
/*
3.00
*/--?????这个意思?
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
--中间变量不定义为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
declare @v int
set @i=2.23
set @v=(@i+0.99)*100
select @v/100
SET @i=2.33
select @i-(@i-2)+1
/*
3.00
*/