~ (按位不) (Azure 流分析)

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

语法

~ expression

参数

expression

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

返回类型

如果输入 值为 bit,则为 bit

如果输入值为 bigint,则 bigint

注解

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

为了说明,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
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

另请参阅