我正试图在SQL Server中执行一个按位NOT操作。我想要做这样的事情:如何在SQL Server中翻转一点?
update foo
set Sync = NOT @IsNew
注:我开始写这一点,并找到了答案,以我自己的问题之前,我完成了。我仍然希望与社区分享,因为这篇文档在MSDN上缺少(直到我将它添加到社区内容中)。
我正试图在SQL Server中执行一个按位NOT操作。我想要做这样的事情:如何在SQL Server中翻转一点?
update foo
set Sync = NOT @IsNew
注:我开始写这一点,并找到了答案,以我自己的问题之前,我完成了。我仍然希望与社区分享,因为这篇文档在MSDN上缺少(直到我将它添加到社区内容中)。
是的,〜运营商将工作。
update foo
set Sync = [email protected]
位非:〜
位与:&
位或:|
按位异或:^
缺少MSDN? http://msdn.microsoft.com/en-us/library/ms173468(SQL.90).aspx
〜:执行上一个整数值逐位逻辑非运算。 〜按位运算符为表达式执行按位逻辑NOT,依次取每位。如果表达式的值为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
我读这错了,我想......是想告诉你,你不能在SQL Server中的Uturn ...:P – Codewerks 2008-10-05 00:07:39
另一个文章:http://blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/MSSQLServer/how-to-flip-a-bit-in-sql-server-by-using – 2010-09-29 19:23:20