2008-10-04 80 views
56

我正试图在SQL Server中执行一个按位NOT操作。我想要做这样的事情:如何在SQL Server中翻转一点?

update foo 
set Sync = NOT @IsNew 

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

+0

我读这错了,我想......是想告诉你,你不能在SQL Server中的Uturn ...:P – Codewerks 2008-10-05 00:07:39

+1

另一个文章: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

回答

21

位非:〜

位与:&

位或:|

按位异或:^

7

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

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

2

为了完整起见:

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