如何在SQL Server中翻转一下?


74

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

update foo
set Sync = NOT @IsNew

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


我读错了,我想...是要告诉你,您不能在SQL Server中掉头...:P
Codewerks

Answers:



30

按位NOT:〜

按位与:&

按位或:

按位XOR:^


10

缺少MSDN吗? http://msdn.microsoft.com/zh-CN/library/ms173468(SQL.90).aspx

〜:对整数值执行按位逻辑非运算。〜按位运算符对表达式执行按位逻辑非,依次取每一位。如果expression的值为0,则结果集中的位设置为1;否则,结果设置为0。否则,结果中的位将被清除为0值。换句话说,将1更改为零,将0更改为1。


天啊 我只是看了按位运算符和〜一元运算符:)
甚至Mien

2

为了完整性:

SELECT b, 1 - b
FROM
  (SELECT cast(1 AS BIT) AS b
   UNION ALL
   SELECT cast(0 AS BIT) AS b) sampletable

1

〜运算符只能与BIT一起使用,

尝试:〜CAST(@IsNew AS BIT)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.