2008-10-04 56 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