如何在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