【发布时间】:2017-02-15 23:38:12
【问题描述】:
我想通过以下代码在 SQL 上进行位切换来执行简单的更新。
UPDATE table SET BoolFields = BoolFields + 1.0 WHERE BoolFields & 1.0 <> 1.0
但是,当我在 Management Studio 上运行它时,我收到了
操作数数据类型float对于'&'运算符无效。
在不将 BooFields 从 float 更改为其他类型的情况下,是否有人可以解决此问题?
编辑
有些人评论我的情况不清楚所以编辑。
条件是我想检查某个位是否被标记为 1。
所以我的实际线路可能是BoolFields & 128.0 <> 128.0
然后
我想SET BoolFields = BoolFields + 128.0
所以我只想在布尔值未标记为 1 时标记它。
【问题讨论】:
-
如果您能知道
update应该在什么条件下执行,那将会有所帮助?问题不清楚。 -
请解释一下,你想达到什么目的。这闻起来像 XY-problem...
-
按位在 float 上?你为什么要使用浮点数,尤其是在存储位时?
-
通读代码后,代码解释器确实将它们存储为纯整数。不过,它似乎被 SSMS 识别为浮动。
标签: sql sql-server ssms sqlcommand