我想在SQL Server中执行按位取反操作。我想要做的事情类似于这样:
update foo
set Sync = NOT @IsNew
注意:我开始写这篇文章时,在完成之前就找到了自己问题的答案。尽管如此,我仍想与社区分享,因为MSDN文档中缺少这一部分内容(直到我也将其添加到社区内容中)。
我想在SQL Server中执行按位取反操作。我想要做的事情类似于这样:
update foo
set Sync = NOT @IsNew
注意:我开始写这篇文章时,在完成之前就找到了自己问题的答案。尽管如此,我仍想与社区分享,因为MSDN文档中缺少这一部分内容(直到我也将其添加到社区内容中)。
是的,~ 运算符可以起作用。
update foo
set Sync = ~@IsNew
按位取反运算符: ~
按位与运算符: &
按位或运算符: |
按位异或运算符: ^
MSDN缺少资料?http://msdn.microsoft.com/en-us/library/ms173468(SQL.90).aspx
~:对整数值进行按位逻辑非操作。 ~按位运算符对表达式执行按位逻辑非操作,依次处理每个比特位。如果 expression 的值为 0,则结果集中的位被设置为 1;否则,结果中的比特位将被清除为 0。换句话说,1 变成了 0,0 变成了 1。
~ 运算符仅适用于 BIT 类型,
尝试: ~ CAST(@IsNew AS BIT)
为了完整起见:
SELECT b, 1 - b
FROM
(SELECT cast(1 AS BIT) AS b
UNION ALL
SELECT cast(0 AS BIT) AS b) sampletable