次の方法で共有


~ (ビットごとの NOT) (Azure Stream Analytics)

整数値に対してビットごとの論理否定演算を実行します。

構文

~ 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

参照