符数转换
SQL语法在 Transact-SQL 语句中,将某个给定的整型值转换为二进制表达式,对其执行按位逻辑非运算。
语法expression
参数expression
是任何有效的 Microsoft® SQL Server™ 表达式(表达式必须由整数数据类型分类中的任何数据类型组成,或者由 binary 或 varbinary 数据类型组成)。expression 是一个经过处理并转换为二进制数字以便进行位运算的整数。
结果类型如果输入值为 int,则返回 int;如果输入值为 smallint,则返回 smallint;如果输入值为 tinyint,则返回 tinyint;或者如果输入值为 bit,则返回 bit。
注释通过从两个表达式取对应的位,位运算符 ~ 对 expression 执行按位逻辑非运算。如果 expression 中某个位(正在被解析的当前位)的值为 0,则结果中该位的值被设置为 1;否则,结果中该位的值将被清除为 0位运算符 ~ 只可以用在整数类型分类的列上。
示例下面的示例创建一个具有 int 数据类型的表以显示值,并将该表放入一行中。
USE master
GO
IF EXISTS ( SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'bitwise')
DROP TABLE bitwise
GO
CREATE TABLE bitwise
(
a_int_value tinyint NOT NULL,
b_int_value tinyint NOT NULL
)
GO
INSERT bitwise VALUES (170, 75)
GO
下面的查询在 a_int_value 列和 b_int_value 列上执行按位 NOT 运算。
USE MASTER
GO
SELECT ~ a_int_value, ~ b_int_value
FROM bitwise
下面是结果集:
--- ---
85 180
(1 row(s) affected)
170(a_int_value 或 A,如下所示)的二进制表示为 0000 0000 1010 1010。在该值上执行按位 NOT 运算所产生的二进制结果是 0000 0000 0101 0101,即十进制数 85。
(~A)
0000 0000 1010 1010
-------------------
0000 0000 0101 0101