MS SQL位变量你不能(@a)吗?

Ash*_*Ash 2 c# sql variables

在c#我有一个:

 a = !a
Run Code Online (Sandbox Code Playgroud)

(如果为false则为true,如果为true则为false)

在SQL中我想用BIT变量做同样的事情

就像是:

 declare @a bit
 set @a = 1
 select @a
 set @a = not (@a)
 select @a
Run Code Online (Sandbox Code Playgroud)

我可以吗?

我总是可以做一个IF,但这会"看起来更好":)

SQL*_*ace 6

尝试使用按位而不是

〜按位运算符对表达式执行按位逻辑NOT,依次取每个位.如果expression的值为0,则结果集中的位设置为1; 否则,结果中的位被清除为值0.换句话说,将1更改为零,将零更改为1.

declare @a bit
 set @a = 0
 select @a
 set @a = ~@a
 select @a
Run Code Online (Sandbox Code Playgroud)

做到1

declare @a bit
 set @a = 1
 select @a
 set @a = ~@a
 select @a
Run Code Online (Sandbox Code Playgroud)