为了账号安全,请及时绑定邮箱和手机立即绑定

数据库高手进 问题神奇

数据库高手进 问题神奇

梦里花落0921 2018-11-06 05:02:19
这是一个语句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

就没有问题了


查看完整回答
反对 回复 2018-11-07
  • 2 回答
  • 0 关注
  • 463 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信