2010-09-29 50 views
2

在C#中,我有一個:MS SQL位變量可不可以(@a)?

a = !a 

(如果假使它真的,如果是真的使得假)

在SQL我想要做同樣的一個位變量

像:

declare @a bit 
set @a = 1 
select @a 
set @a = not (@a) 
select @a 

可以嗎?

我總是可以做一個IF,但這將「更好看」 :)

回答

6

通過使用按位不

的〜位運算符的表達式執行邏輯逐位NOT,取每個比特依次嘗試。如果表達式的值爲0,則結果集中的位被設置爲1;否則,結果中的位被清除爲0值。換句話說,其中一個變爲零,零變爲1。

declare @a bit 
set @a = 0 
select @a 
set @a = [email protected] 
select @a 

讓它1

declare @a bit 
set @a = 1 
select @a 
set @a = [email protected] 
select @a 
+0

+1。我學到了什麼,thx。 – 2010-09-29 14:01:51

+0

〜(按位不)\t返回數字的補碼。 – Branimir 2010-09-29 14:03:31

0

您可以使用XOR運營商爲。

declare @a bit 
set @a = 1 
select @a 

set @a = @a^1 
select @a 

set @a = @a^1 
select @a 
0

下面的代碼:

set @a = @a^1