83

我正在尝试在 SQL Server 中执行按位 NOT。我想做这样的事情:

update foo
set Sync = NOT @IsNew

注意:我开始写这篇文章并在完成之前找到了我自己问题的答案。我仍然想与社区分享,因为 MSDN 上缺少这段文档(直到我也将它添加到社区内容中)。

4

5 回答 5

123

是的, ~ 运算符将起作用。

update foo
set Sync = ~@IsNew
于 2008-10-04T23:40:54.060 回答
32

按位非:~

按位与:&

按位或:|

按位异或:^

于 2008-10-04T23:21:44.940 回答
10

缺少 MSDN? http://msdn.microsoft.com/en-us/library/ms173468(SQL.90).aspx

~:对整数值执行按位逻辑非运算。~ 按位运算符对表达式执行按位逻辑 NOT,依次取每个位。如果表达式的值为 0,则结​​果集中的位设置为 1;否则,结果中的位被清零。换句话说,1 变为 0,0 变为 1。

于 2008-10-04T23:37:35.813 回答
2

为了完整起见:

SELECT b, 1 - b
FROM
  (SELECT cast(1 AS BIT) AS b
   UNION ALL
   SELECT cast(0 AS BIT) AS b) sampletable
于 2013-08-06T16:27:07.593 回答
1

~ 运算符仅适用于 BIT,

试试:~ CAST(@IsNew AS BIT)

于 2019-07-11T19:38:14.500 回答