SQL Serverでビット単位のNOTを実行しようとしています。私はこのようなことをしたいと思います:
update foo
set Sync = NOT @IsNew
注:これを書き始め、終了する前に自分の質問に対する答えを見つけました。このドキュメントはMSDNに欠けていたので(コミュニティコンテンツに追加するまで)、コミュニティと共有したかったのです。
はい、〜演算子は機能します。
update foo
set Sync = ~@IsNew
ビットごとのNOT:〜
ビットごとのAND:&
ビットごとのOR:|
ビットごとのXOR:^
MSDNが不足していますか? http://msdn.Microsoft.com/en-us/library/ms173468(SQL.90).aspx
〜:整数値に対してビットごとの論理NOT演算を実行します。 〜ビットごとの演算子は、式に対してビットごとの論理否定を実行し、各ビットを順番に取得します。 expressionの値が0の場合、結果セットのビットは1に設定されます。それ以外の場合、結果のビットは値0にクリアされます。つまり、1はゼロに変更され、0は1に変更されます。
完全を期すために:
SELECT b, 1 - b
FROM
(SELECT cast(1 AS BIT) AS b
UNION ALL
SELECT cast(0 AS BIT) AS b) sampletable
〜演算子はBITでのみ機能し、
試してください:〜CAST(@IsNew AS BIT)