我有一张表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
答案 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