我试图使用一个更新查询来翻转SQL Server中的一个字段,也就是说,我想将所有0转换成1,反之亦然.最优雅的解决方案是什么?

t-SQL中似乎没有按位NOT运算符(除非我遗漏了一些明显的内容),而且我也找不到任何其他执行更新的方法.

推荐答案

这不需要按位计算,只要用1/true对其进行异或即可.

要查看它:

select idColumn, bitFieldY, bitFieldY ^ 1 as Toggled
from tableX

要更新:

update tableX
set bitFieldY = bitFieldY ^ 1
where ...

MSDN T-SQL Exclusive-OR (^)

Sql相关问答推荐

SQL Server 按从前到后的顺序从记录中减去一个值

AWS Athena 使用 AND 条件查询 JSON 数组

按日期、学生框架中的条件取最近的行

仅向自己显示受惩罚用户的聊天消息

达到总和后停止 SQL 选择

选择按列排序的唯一索引的最后一行

COUNT(1) 还是 COUNT(*) 更适合 PostgreSQL

Postgres 大表 Select Query With In 子句的最优索引选择

BigQuery JSON - 标量子查询产生了多个元素

根据其他记录更新记录

如何在 SQL 中进行 regex_replace?

当行值非零时获取列表聚合中的列名

用于基于与其他行比较、交叉匹配行添加值的 SQL 查询

如何使用 SQLPLUS 假脱机到 CSV 格式的文件?

SQL Server 如果存在则 1 否则 2

NOT LIKE 和 LIKE 不返回相反的结果

如何在 postgresql 中按周分组

无法删除表用户,因为其他对象依赖于它

ORA-01791: 不是 SELECTed 表达式

Hive 插入查询,如 SQL