~ (位非)

✅ Azure 流分析 ✅ 构造事件流

对整数值执行按位逻辑 NOT 运算。

语法

~ expression

论据

expression

数据类型位或 bigint 的任何有效表达式。 表达式被视为按位运算的二进制数。

返回类型

如果输入值为 bit,则为 bit

如果输入值为 bigint,则 bigint

注解

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

例如,170 的二进制表示形式为 0000 0000 1010 1010。 对此值执行按位 NOT 运算将生成二进制结果 1111 1111 0101 0101,即十进制 -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
Null 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
bigint

另请参阅