单个sql语句中的按位加法和减法

时间:2017-03-29 23:36:37

标签: sql sql-server bitwise-operators bit-shift

我想从按位字段中删除一个标志,同时我想添加两个标志

Declare @status int = 3
SET @status &= ~3 -- this will remove 1 and 2 if exists
SET @status |= 12 -- this will add 4 and 8 if exists

我想要将它们放在一起,因为它用在更新语句中,如

SET @status = (@status | 12 ) - (CASE WHEN (@status & 2 = 2) THEN 2 ELSE 0 END) - (CASE WHEN (@status & 1 = 1) THEN 1 ELSE 0 END)

任何人都知道如何使用按位运算符和加法部分来执行减法部分。

类似的东西,

SET @status |= 12 & ~2 --But this doesn't do what I want

提前致谢。

1 个答案:

答案 0 :(得分:2)

这不起作用吗?

SET @status = ((@status & ~3) | 12)