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

Lis*_*isa 3 t-sql

我需要只用 0 或 1 填充位列,我尝试了以下操作,但只给了我 1:

convert(bit, 2*rand())
Run Code Online (Sandbox Code Playgroud)

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

Ada*_*son 5

向此表达式传递任何大于 0 的值每次都会产生 1。为了做你想做的事,你需要自己对结果进行舍入:

select convert(bit, round(1*rand(),0))
Run Code Online (Sandbox Code Playgroud)

这将为您提供一个随机值01 bit值。

  • 不过,“rand()”每个查询仅计算一次,因此所有列值都将相同。 (4认同)

Dam*_*ver 5

如果您需要多行,并且不关心值的具体分布,则类似以下内容可能是合适的:

CONVERT(bit,SUBSTRING(CONVERT(binary(18),newid()),1,1)&1)
Run Code Online (Sandbox Code Playgroud)

这将每行评估一次