整数値に対してビットごとの論理否定演算を実行します。
構文
~ expression
引数
式 (expression)
データ型 bit または bigint の任意の有効な式です。 式は、ビットごとの演算の 2 進数として扱われます。
戻り値の型
入力 値がビットの場合は bit。
入力値が bigint の場合は bigint。
注釈
~ ビットごとの演算子は、式に対してビットごとの論理 NOT を実行し、各ビットを順番に取得します。 式の値が 0 の場合は、結果セット内のビットが 1 に設定されます。0 以外の場合は、結果セット内のビットがクリアされて値が 0 になります。 つまり、1 は 0 に、0 は 1 に変更されます。
たとえば、170 のバイナリ表現は 0000 0000 1010 1010 です。 この値に対してビットごとの NOT 演算を実行すると、バイナリ結果 1111 1111 0101 0101 (10 進数 -171) が生成されます。
(~170)
0000 0000 1010 1010
-------------------
1111 1111 0101 0101
例
共通の入力データセットを使用する場合:
WITH MyCTE AS (
SELECT
CAST(0 AS BIT) AS bit0,
CAST(1 AS BIT) AS bit1,
CAST(NULL AS BIT) AS bitN,
CAST(0 AS BIGINT) AS bigint0,
CAST(1 AS BIGINT) AS bigint1,
CAST(NULL AS BIGINT) AS bigintN
FROM input
)
ビット式に演算子を適用する:
SELECT
bit0,
bit1,
bitN,
~ bit0 AS NOT0,
~ bit1 AS NOT1,
~ bitN AS NOTnull
INTO bitNOT
FROM MyCTE
戻り値:
bit0 | bit1 | bitN | NOT0 | NOT1 | NOTnull |
---|---|---|---|---|---|
false | true | NULL | TRUE | false | NULL |
bigint 式に演算子を適用する:
SELECT
bigint0,
bigint1,
bigintN,
~ bigint0 AS NOT0,
~ bigint1 AS NOT1,
~ bigintN AS NOTnull,
~ 170 AS NOT170
INTO bigintNOT
FROM MyCTE
戻り値:
bit0 | bit1 | bitN | NOT0 | NOT1 | NOTnull | NOT170 |
---|---|---|---|---|---|---|
0 | 1 | NULL | -1 | -2 | NULL | -171 |
出力の 種類の検証:
SELECT
GetType(~ bit0) AS NOTtype_bit,
GetType(~ bigint0) AS NOTtype_bigint
INTO typesNOT
FROM MyCTE
戻り値:
NOTtype_bit | NOTtype_bigint |
---|---|
bit | bigint |