如何使用update语句将列值从0切换为1,反之亦然?

时间:2012-04-29 03:52:19

标签: sql sql-server tsql sql-server-2005

我有一张表Table1,如下所示

col1 col2
---- ----
 A    1
 B    1
 C    1
 D    0
 E    0
 F    0

我希望结果表应该如下(通过使用Update语句)

col1 col2
---- ----
 A    0
 B    0
 C    0
 D    1
 E    1
 F    1

6 个答案:

答案 0 :(得分:31)

脚本1 Demo at SQL Fiddle

UPDATE dbo.Table1 SET col2 = (CASE col2 WHEN 1 THEN 0 ELSE 1 END);

脚本2 :如果值始终为0或1,则可以使用按位异或运算符Demo at SQL Fiddle

UPDATE dbo.Table1 SET col2 = (col2 ^ 1);

答案 1 :(得分:15)

既然你提到你正在使用INT,那么:

update dbo.Table1 set col2 = 1 - col2;

答案 2 :(得分:11)

我确信有更优雅的方式,但这应该有效:

UPDATE Table1
SET col2 = CASE col2 WHEN 0 THEN 1 WHEN 1 THEN 0 ELSE col2 END

答案 3 :(得分:10)

如果在SQL Server上使用正确的布尔值(BIT),则可以使用:http://sqlfiddle.com/#!6/0ed3c/1

UPDATE dbo.Table1 SET col2 = ~col2;

答案 4 :(得分:0)

非常简单的查询

fireba(s)estorage

说明:

  • 情况为0:

    update table set col= (col-1)* -1;
    
  • 情况1:

    update table set col= (0-1)* -1; // return 1;
    

答案 5 :(得分:0)

你可以这样做:

UPDATE table SET col = 1-col