我想执行一个简单的更新,而bit onsing on sql则使用以下代码。
UPDATE table SET BoolFields = BoolFields + 1.0 WHERE BoolFields & 1.0 <> 1.0
但是,当我在管理工作室上运行此功能时,我会收到
操作数数据类型float无效'&amp;'操作员。
任何人都有线索可以解决此问题而不将Boofield从Float更改为其他类型?
编辑
有些人评论我的病情尚不清楚,所以编辑。
条件是我要检查并查看某些位是否被标记为一个。所以我的实际行可以是 BoolFields & 128.0 <> 128.0
然后
我想 SET BoolFields = BoolFields + 128.0
所以我只想在不标记为1。
如果您确实需要在 float值上使用 bitwise operator-不支持它们 - 您需要将它们施放到诸如bit
或int
(此处列出https://msdn.microsoft.com/en-us/library/ms176122.aspx)的类型支持位操作的类型(在此处列出),即:
update table set BoolFields = BoolFields + 1.0 where cast(BoolFields as int) & 1 <> 1
,但我认为,您应该考虑在浮点数范围内进行操作,而不是强迫位运算符。也许您应该描述一个用例,以散发出一些光线,为什么要这样做。