17

我有一张Table1如下表

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

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

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

6 回答 6

34

脚本 1 SQL Fiddle 的演示

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

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

UPDATE dbo.Table1 SET col2 = (col2 ^ 1);
于 2012-04-29T04:00:51.187 回答
20

既然您提到您正在使用 INT,那么如何:

update dbo.Table1 set col2 = 1 - col2;
于 2012-04-29T06:40:24.520 回答
15

我敢肯定有一种更优雅的方式,但这应该可行:

UPDATE Table1
SET col2 = CASE col2 WHEN 0 THEN 1 WHEN 1 THEN 0 ELSE col2 END
于 2012-04-29T03:59:51.437 回答
10

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

UPDATE dbo.Table1 SET col2 = ~col2;
于 2012-04-29T04:20:04.447 回答
0

非常简单的查询

update table set col= (col-1)* -1;

解释:

  • 0的情况:

    update table set col= (0-1)* -1; // return 1;
    
  • 案例1:

    update table set col= (1-1)* -1; // return 0;
    
于 2019-05-02T09:55:00.727 回答
0

你可以这样做 :

UPDATE table SET col = 1-col
于 2021-04-23T11:03:09.907 回答