位于SQL Server 2016上的浮点值上的位置操作



我想执行一个简单的更新,而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-不支持它们 - 您需要将它们施放到诸如bitint(此处列出https://msdn.microsoft.com/en-us/library/ms176122.aspx)的类型支持位操作的类型(在此处列出),即:

update table set BoolFields = BoolFields + 1.0 where cast(BoolFields as int) & 1 <> 1

,但我认为,您应该考虑在浮点数范围内进行操作,而不是强迫位运算符。也许您应该描述一个用例,以散发出一些光线,为什么要这样做。

最新更新