Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用update语句将列值从0切换到1,反之亦然?_Sql_Sql Server_Tsql_Sql Server 2005 - Fatal编程技术网

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

Sql 如何使用update语句将列值从0切换到1,反之亦然?,sql,sql-server,tsql,sql-server-2005,Sql,Sql Server,Tsql,Sql Server 2005,我有一个表表1,如下所示 col1 col2 ---- ---- A 1 B 1 C 1 D 0 E 0 F 0 我希望结果表如下(使用Update语句) 我相信还有一种更优雅的方式,但这应该是可行的: UPDATE Table1 SET col2 = CASE col2 WHEN 0 THEN 1 WHEN 1 THEN 0 ELSE col2 END 脚本1: 脚本2:如果值始终为0或1,则可以使用逐位异或运算符 如果在SQL Server

我有一个表
表1
,如下所示

col1 col2
---- ----
 A    1
 B    1
 C    1
 D    0
 E    0
 F    0
我希望结果表如下(使用
Update
语句)


我相信还有一种更优雅的方式,但这应该是可行的:

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

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


如果在SQL Server上使用正确的布尔值(位),则可以使用:


既然您提到您正在使用INTs,那么:

update dbo.Table1 set col2 = 1 - col2;
非常简单的查询

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;
    
您可以这样做:

UPDATE table SET col = 1-col

根据第二列的值,如果为0,则应使用1更新,如果为1,则应使用0更新。我尝试了更新和案例,但不起作用。太好了。。。它工作得很好。非常感谢您的快速帮助。:)只是吹毛求疵,比特和布尔不一样。SQL Server中没有布尔类型。是的,SQL Server没有布尔类型,这就是为什么这不起作用的原因。
SELECT*FROM assessed WHERE is inssured
。SQL Server的BIT并不像其他数据库(例如PostgreSQL)那样是一级布尔值。SQL Server的布尔值与Fortran上的一样不存在。BIT是SQL Server团队出于布尔目的引入的。但出于所有目的,SQLServer的每一位都是布尔值。实体框架和许多orm也尊重这一点:在一个人为的测试中,针对一个巨大的表,您的script2比我的尝试快了一点。不确定我们能不能在这方面有所改进。干得好!不是OP想要的,但万一有人用谷歌搜索这个。这在检查字符串时也起作用:UPDATE dbo.Table1 SET col1=(CASE col1当'A'时,然后'B'当'B'时,然后'A'ELSE col1 END);这是简单而精彩的。请解释代码的作用以及它是如何实现的。
update table set col= (col-1)* -1;
update table set col= (0-1)* -1; // return 1;
update table set col= (1-1)* -1; // return 0;
UPDATE table SET col = 1-col