SQL Server的BIT TYPE反向数据

时间:2013-06-30 16:16:40

标签: sql-server

我有一个使用BIT类型(1/0)的列。我有一些记录设置为1,一些设置为0.这些记录标志需要反转。所以基本上,我希望所有记录都设置为0,所有记录都设置为1。

如果我跑

Update Table1 Set Flag = 1 Where Flag = 0

首先,我恐怕所有记录标志现在都是1,并且无法知道哪些是flag = 0。

有什么建议吗?

谢谢!

5 个答案:

答案 0 :(得分:3)

要取消所有bit字段的值,请在一次操作中执行此操作。您可以使用CASE

UPDATE table1
SET    flag = CASE flag
                WHEN 1 THEN 0
                WHEN 0 THEN 1
              END 

Bitwise Exclusive OR

UPDATE table1
SET    flag = flag ^ 1

答案 1 :(得分:3)

这是一种没有CASE语句的方法,而是使用按位运算符:

update Table1
set flag = ~flag

希望这有帮助!

答案 2 :(得分:0)

尝试以下查询:

update table1
set flag = case when flag = 1 then 0 else 1 end

这肯定会解决你的问题。

答案 3 :(得分:0)

 Update table1 
  Set flag = Case flag 
      When 1 then 0 
      Else 1 End

答案 4 :(得分:0)

有简单的算术:

update table1
  set Flag = 1 - Flag

马丁史密斯的第二个答案可以简化为更加模糊:

update table1
  set Flag ^= 1

非常适合击键挑战,但我认为它在可读性,可维护性或性能方面没有提高。