我需要用0或1填充一点列,我尝试了以下,只给了我1:
convert(bit, 2*rand())
我怎样才能让它发挥作用?
答案 0 :(得分:3)
将任何大于0的值传递给此表达式,每次都会产生1。为了做你想做的事,你需要自己完成结果:
select convert(bit, round(1*rand(),0))
这会为您提供随机的0
或1
bit
值。
答案 1 :(得分:2)
如果您使用的是SQL Server 2008,则可以使用
CAST(CAST(CRYPT_GEN_RANDOM(1) AS int)%2 AS BIT)
对于以前的版本,您可以使用
CAST(CAST(CHECKSUM(NEWID()) AS int)%2 AS BIT)
答案 2 :(得分:1)
如果您需要多行,并且您不关心值的具体分布,则可能适合以下内容:
CONVERT(bit,SUBSTRING(CONVERT(binary(18),newid()),1,1)&1)
每行评估一次