83

SQL Server でビット単位の NOT を実行しようとしています。私はこのようなことをしたいと思います:

update foo
set Sync = NOT @IsNew

注:これを書き始めて、書き終える前に自分の質問に対する答えを見つけました。このドキュメントは MSDN に欠けていたので、コミュニティと共有したかったのです (MSDN のコミュニティ コンテンツにも追加するまでは)。

4

5 に答える 5

123

はい、〜演算子は機能します。

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

ビット単位の NOT: ~

ビットごとの AND: &

ビットごとの OR: |

ビット単位の XOR: ^

于 2008-10-04T23:21:44.940 に答える
10

MSDNが不足していますか? http://msdn.microsoft.com/en-us/library/ms173468(SQL.90).aspx

〜:整数値に対してビット単位の論理NOT演算を実行します。〜ビット演算子は、式に対してビット単位の論理否定を実行し、各ビットを順番に取得します。式の値が0の場合、結果セットのビットは1に設定されます。それ以外の場合、結果のビットは値0にクリアされます。つまり、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 に答える