SQL语句中取反运算
来源:互联网 发布:天音淘宝客软件价格 编辑:程序博客网 时间:2024/06/07 14:55
flat=~flat
~(按位 NOT)
在 Transact-SQL 语句中,将某个给定的整型值转换为二进制表达式,对其执行按位逻辑 非运算。
语法
~ expression
参数
expression
是任何有效的 Microsoft® SQL Server™ 表达式(表达式必须由整数数据类型分类中的任何数据类型组成,或者由 binary 或 varbinary 数据类型组成)。expression 是一个经过处理并转换为二进制数字以便进行位运算的整数。
结果类型
如果输入值为 int,则返回 int;如果输入值为 smallint,则返回 smallint;如果输入值为 tinyint,则返回 tinyint;或者如果输入值为 bit,则返回 bit。
注释
通过从两个表达式取对应的位,位运算符 ~ 对 expression 执行按位逻辑非运算。如果 expression 中某个位(正在被解析的当前位)的值为 0,则结果中该位的值被设置为 1;否则,结果中该位的值将被清除为 0。
位运算符 ~ 只可以用在整数类型分类的列上。
重要 每当执行任意类型的位运算时,位运算中所使用的表达式的存储长度是非常重要的。建议在存储值时,使用相同的字节数。例如,将十进制数 5 存储为 tinyint、smallint 或 int 数据类型时,所生成的值将用不同的字节数存储。tinyint 用 1 个字节存储数据,smallint 用 2 个字节存储数据,int 用 4 个字节存储数据。因此,与直接进行二进制或十六进制转换相比,在一个 int 数据类型的十进制数上执行位运算会产生不同的结果,当使用 ~(按位 NOT)运算符时,尤其如此。按位 NOT 运算可以对长度较小的变量执行操作,但是当该变量转换为较长的数据类型时,则高 8 位的值就有可能与期望的值不同。建议先将数据类型较小的变量转换为较大的数据类型,然后对所得的结果执行按位 NOT 运算。
示例
下面的示例创建一个具有 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
~(按位 NOT)
语法
~ expression
参数
expression
是任何有效的 Microsoft® SQL Server™ 表达式(表达式必须由整数数据类型分类中的任何数据类型组成,或者由 binary 或 varbinary 数据类型组成)。expression 是一个经过处理并转换为二进制数字以便进行位运算的整数。
结果类型
如果输入值为 int,则返回 int;如果输入值为 smallint,则返回 smallint;如果输入值为 tinyint,则返回 tinyint;或者如果输入值为 bit,则返回 bit。
注释
通过从两个表达式取对应的位,位运算符 ~ 对 expression 执行按位逻辑非运算。如果 expression 中某个位(正在被解析的当前位)的值为 0,则结果中该位的值被设置为 1;否则,结果中该位的值将被清除为 0。
位运算符 ~ 只可以用在整数类型分类的列上。
重要 每当执行任意类型的位运算时,位运算中所使用的表达式的存储长度是非常重要的。建议在存储值时,使用相同的字节数。例如,将十进制数 5 存储为 tinyint、smallint 或 int 数据类型时,所生成的值将用不同的字节数存储。tinyint 用 1 个字节存储数据,smallint 用 2 个字节存储数据,int 用 4 个字节存储数据。因此,与直接进行二进制或十六进制转换相比,在一个 int 数据类型的十进制数上执行位运算会产生不同的结果,当使用 ~(按位 NOT)运算符时,尤其如此。按位 NOT 运算可以对长度较小的变量执行操作,但是当该变量转换为较长的数据类型时,则高 8 位的值就有可能与期望的值不同。建议先将数据类型较小的变量转换为较大的数据类型,然后对所得的结果执行按位 NOT 运算。
示例
下面的示例创建一个具有 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
- SQL语句中取反运算
- sql 语句运算顺序
- SQL语句 运算符
- sql语句中的运算符
- mysql sql语句 update 加法运算
- SQL基础--基础语句和运算
- SQL表达式,条件语句与运算
- SQL语句实现三元运算符效果
- 解决Hibernate 3不支持 "&" 运算的SQL语句
- 解决Hibernate 3不支持 "&" 运算的SQL语句
- 解决Hibernate 3不支持 "&" 运算的SQL语句
- ASP实现SQL语句日期格式的加减运算
- LINQ to SQL语句(18)之运算符转换
- SQL--表达式,条件语句,运算和WHERE子句 (2)
- LINQ to SQL语句(18)之运算符转换
- LINQ to SQL语句(18)之运算符转换
- 【SQL】SELECT语句中集合运算符 UNION/INTERSECT/MINUS
- SQL语句中AND OR运算符优先级
- 动态加载SCRIPT文件
- 常用网址
- ctrl转enter键使用
- 产生指定范围内的随机数
- 返回[页宽,页高,可见区宽,可见区高]
- SQL语句中取反运算
- 转贴:黑客高手必懂基础内容 (发在这里只为娱乐大家)
- 在js中如何比较两个时间字符串的大小
- 右下角出现提示DIV
- 用字符串调用函数
- 用js做冒泡排序
- 用Javascript评估用户输入密码的强度
- 简单的数据库操作:
- 一个输入框输入日期或时间,并验证输入是否有效