如何在SQL Server中翻转一下?

我试图在SQL Server中执行一个按位NOT。 我想要做这样的事情:

update foo set Sync = NOT @IsNew 

注意:我开始写这个,在我完成之前找出了我自己问题的答案。 我仍然希望与社区分享,因为MSDN上缺less这样的文档(直到我将它添加到社区内容中)。

是的,〜操作员将工作。

 update foo set Sync = ~@IsNew 

按位NOT:〜

按位与:

按位OR:|

按位异或:^

缺lessMSDN? http://msdn.microsoft.com/en-us/library/ms173468(SQL.90).aspx

〜:对整数值执行按位逻辑非操作。 〜按位运算符为expression式执行按位逻辑NOT,依次取每位。 如果expression式的值为0,则结果集中的位被设置为1; 否则,结果中的位被清除为0。换句话说,一个变为零,零变为1。

为了完整:

 SELECT b, 1 - b FROM (SELECT cast(1 AS BIT) AS b UNION ALL SELECT cast(0 AS BIT) AS b) sampletable