如何为位列仅生成o或1?

时间:2011-01-05 15:09:49

标签: tsql

我需要用0或1填充一点列,我尝试了以下,只给了我1:

convert(bit, 2*rand())

我怎样才能让它发挥作用?

3 个答案:

答案 0 :(得分:3)

将任何大于0的值传递给此表达式,每次都会产生1。为了做你想做的事,你需要自己完成结果:

select convert(bit, round(1*rand(),0))

这会为您提供随机的01 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)

每行评估一次