这是一个语句select case cast(rand()*10 as int)%4 when 0 then 0when 1 then 1 when 2 then 2 when 3 then 3 else 4 end这样执行的结果经常出现一个 4 ?? 为什么啊 这样写 就不会出现4 select cast(rand()*10 as int)%4 if(abs(checksum(newid()))%4='')beginprint '123'end if(abs(checksum(rand()))%4='')beginprint '123'end以上2个结果也经常出现 123 为什么了。 把问题发到了首页,急切想找到答案哦。 问了好多了。还是没有答案。
2 回答
九州编程
TA贡献1785条经验 获得超4个赞
select
case cast(rand()*10 as int)%4
when 0 then 0
when 1 then 1
when 2 then 2
when 3 then 3
else 4 end
相当于
if (cast(rand()*10 as int)%4 == 0)
//print 0
else if (cast(rand()*10 as int)%4 == 1)
//print 1
else if (cast(rand()*10 as int)%4 == 2)
//print 2
else if (cast(rand()*10 as int)%4 == 3)
//print 3
else
//print 4
每次都产生 了随机数,所以才会出现4
使用
DECLARE @d int
SET @d = cast(rand()*10 as int)%4
SELECT
case @d
when 0 then 0
when 1 then 1
when 2 then 2
when 3 then 3
else 4 end
就没有问题了
- 2 回答
- 0 关注
- 482 浏览
添加回答
举报
0/150
提交
取消