~ (按位不) (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 |