【问题标题】:MS SQL bit variable can you Not(@a)?MS SQL 位变量你不能(@a)吗?
【发布时间】:2010-09-29 13:54:38
【问题描述】:

在 c# 中我有一个:

 a = !a

(如果为假则为真,如果为真则为假)

在 sql 中我想对 BIT 变量做同样的事情

类似:

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

我可以吗?

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

【问题讨论】:

    标签: c# sql variables


    【解决方案1】:

    使用按位不试试这个

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

    declare @a bit
     set @a = 0
     select @a
     set @a = ~@a
     select @a
    

    让它成为 1

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

    【讨论】:

    • ~ (Bitwise NOT) 返回数字的补码。
    【解决方案2】:

    您可以为此使用XOR 运算符。

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

    【讨论】:

      【解决方案3】:

      代码如下:

      set @a = @a^1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-14
        • 2011-02-20
        • 2016-09-18
        • 1970-01-01
        • 2010-09-15
        • 2020-01-17
        • 2023-04-11
        相关资源
        最近更新 更多