How do I flip a bit in SQL Server?
Solution 1
Yes, the ~ operator will work.
update foo
set Sync = ~@IsNew
Solution 2
Bitwise NOT: ~
Bitwise AND: &
Bitwise OR: |
Bitwise XOR: ^
Solution 3
Lacking on MSDN? http://msdn.microsoft.com/en-us/library/ms173468(SQL.90).aspx
~: Performs a bitwise logical NOT operation on an integer value. The ~ bitwise operator performs a bitwise logical NOT for the expression, taking each bit in turn. If expression has a value of 0, the bits in the result set are set to 1; otherwise, the bit in the result is cleared to a value of 0. In other words, ones are changed to zeros and zeros are changed to ones.
Solution 4
For the sake of completeness:
SELECT b, 1 - b
FROM
(SELECT cast(1 AS BIT) AS b
UNION ALL
SELECT cast(0 AS BIT) AS b) sampletable
Solution 5
~ operator will work only with BIT,
try: ~ CAST(@IsNew AS BIT)
Related videos on Youtube
Even Mien
How many licks does it take to understand a regular expression?
Updated on July 05, 2022Comments
-
Even Mien almost 2 years
I'm trying to perform a bitwise NOT in SQL Server. I'd like to do something like this:
update foo set Sync = NOT @IsNew
Note: I started writing this and found out the answer to my own question before I finished. I still wanted to share with the community, since this piece of documentation was lacking on MSDN (until I added it to the Community Content there, too).
-
Codewerks over 15 yearsI read this wrong I think...was gonna tell you that you can't make a Uturn in SQL Server...:P
-
Even Mien over 13 yearsAnother article: blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/…
-
-
Even Mien over 15 yearsD'oh. I just looked under bitwise operators and ~ unary operators :)