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