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