sql server 2005 T-SQL &(位与)(Transact-SQL)
2007-12-20 13:18
441 查看
对两个整数值执行位与逻辑运算。
![](ms174965.05b1d166-d807-482c-891f-30b3b6b58046(zh-cn,SQL.90).gif)
Transact-SQL 语法约定
![](../../Platform/Controls/CollapsibleArea/resources/minus.gif)
语法
![](../../Platform/Controls/CollapsibleArea/resources/minus.gif)
参数
expression
整数数据类型分类中的任何数据类型或者 bit、binary 或 varbinary 数据类型的任何有效表达式。expression 被视为位运算的二进制数字。
![](../../Platform/Controls/CollapsibleArea/resources/minus.gif)
结果类型
如果输入值为 int,则为 int。
如果输入值为 smallint,则为 smallint。
tinyint 如果输入值是 tinyint 或 bit。
![](../../Platform/Controls/CollapsibleArea/resources/minus.gif)
备注
& 位运算符将在两个表达式之间执行位与逻辑运算,从两个表达式取对应的位。当且仅当输入表达式中两个位(正在被解析的当前位)的值都为 1 时,结果中的位才被设置为 1;否则,结果中的位被设置为 0。
如果左侧和右侧的表达式具有不同的整数数据类型(例如,左侧的 expression 的数据类型为 smallint,右侧的 expression 的数据类型为 int),则会将较小数据类型的参数转换为较大数据类型。在以下示例中,smallint expression 被转换为 int。
![](../../Platform/Controls/CollapsibleArea/resources/minus.gif)
示例
以下示例将使用 int 数据类型创建一个表,用于存储值,并将两个值插入到一行中。
![](http://blog.csdn.net/Platform/Controls/CodeSnippet/resources/copy_off.gif)
复制代码
下面的查询将在 a_int_value 和 b_int_value 列之间执行位与运算。
![](http://blog.csdn.net/Platform/Controls/CodeSnippet/resources/copy_off.gif)
复制代码
下面是结果集:
![](http://blog.csdn.net/Platform/Controls/CodeSnippet/resources/copy_off.gif)
复制代码
170(a_int_value 或 A)的二进制表示形式是 0000 0000 1010 1010。75(b_int_value 或 B)的二进制表示形式是 0000 0000 0100 1011。对上述两个值执行“位与”运算将产生二进制结果 0000 0000 0000 1010,即十进制数 10。
![](http://blog.csdn.net/Platform/Controls/CodeSnippet/resources/copy_off.gif)
复制代码
![](ms174965.05b1d166-d807-482c-891f-30b3b6b58046(zh-cn,SQL.90).gif)
Transact-SQL 语法约定
![](../../Platform/Controls/CollapsibleArea/resources/minus.gif)
语法
expression & expression
![](../../Platform/Controls/CollapsibleArea/resources/minus.gif)
参数
expression
整数数据类型分类中的任何数据类型或者 bit、binary 或 varbinary 数据类型的任何有效表达式。expression 被视为位运算的二进制数字。
![]() 注意: |
---|
在位运算中,只有一个 expression 可以是 binary 或 varbinary 数据类型。 |
![](../../Platform/Controls/CollapsibleArea/resources/minus.gif)
结果类型
如果输入值为 int,则为 int。
如果输入值为 smallint,则为 smallint。
tinyint 如果输入值是 tinyint 或 bit。
![](../../Platform/Controls/CollapsibleArea/resources/minus.gif)
备注
& 位运算符将在两个表达式之间执行位与逻辑运算,从两个表达式取对应的位。当且仅当输入表达式中两个位(正在被解析的当前位)的值都为 1 时,结果中的位才被设置为 1;否则,结果中的位被设置为 0。
如果左侧和右侧的表达式具有不同的整数数据类型(例如,左侧的 expression 的数据类型为 smallint,右侧的 expression 的数据类型为 int),则会将较小数据类型的参数转换为较大数据类型。在以下示例中,smallint expression 被转换为 int。
![](../../Platform/Controls/CollapsibleArea/resources/minus.gif)
示例
以下示例将使用 int 数据类型创建一个表,用于存储值,并将两个值插入到一行中。
![](http://blog.csdn.net/Platform/Controls/CodeSnippet/resources/copy_off.gif)
复制代码
USE tempdb; GO IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'bitwise') DROP TABLE bitwise; GO CREATE TABLE bitwise ( a_int_value int NOT NULL, b_int_value int NOT NULL ); GO INSERT bitwise VALUES (170, 75); GO
下面的查询将在 a_int_value 和 b_int_value 列之间执行位与运算。
![](http://blog.csdn.net/Platform/Controls/CodeSnippet/resources/copy_off.gif)
复制代码
USE tempdb; GO SELECT a_int_value & b_int_value FROM bitwise; GO
下面是结果集:
![](http://blog.csdn.net/Platform/Controls/CodeSnippet/resources/copy_off.gif)
复制代码
----------- 10 (1 row(s) affected)
170(a_int_value 或 A)的二进制表示形式是 0000 0000 1010 1010。75(b_int_value 或 B)的二进制表示形式是 0000 0000 0100 1011。对上述两个值执行“位与”运算将产生二进制结果 0000 0000 0000 1010,即十进制数 10。
![](http://blog.csdn.net/Platform/Controls/CodeSnippet/resources/copy_off.gif)
复制代码
(A & B) 0000 0000 1010 1010
相关文章推荐
- sql server 2005 T-SQL >(大于)(Transact-SQL)
- sql server 2005 COUNT (Transact-SQL)
- sql server 2005 T-SQL 参考 -(负)(Transact-SQL)
- sql server 2005 T-SQL ^(位异或)(Transact-SQL)
- sql server 2005 T-SQL _(通配符 - 匹配一个字符)(Transact-SQL)
- sql server 2005 T-SQL @@FETCH_STATUS (Transact-SQL)
- sql server 2005 T-SQL @@MAX_PRECISION (Transact-SQL)
- sql server 2005 T-SQL @@ROWCOUNT (Transact-SQL)
- sql server 2005 T-SQL @@TOTAL_WRITE (Transact-SQL)
- sql server 2005 T-SQL ALTER INDEX (Transact-SQL)
- sql server 2005 T-SQL ALTER REMOTE SERVICE BINDING (Transact-SQL)
- sql server 2005 T-SQL ALTER TRIGGER (Transact-SQL)
- sql server 2005 T-SQL AVG (Transact-SQL)
- sql server 2005 T-SQL BEGIN DISTRIBUTED TRANSACTION (Transact-SQL)
- sql server 2005 T-SQL @@ERROR (Transact-SQL)
- sql server 2005 T-SQL @@MAX_PRECISION (Transact-SQL)
- sql server 2005 T-SQL @@PROCID (Transact-SQL)
- sql server 2005 T-SQL @@TRANCOUNT (Transact-SQL)
- sql server 2005 T-SQL ALTER INDEX (Transact-SQL)
- sql server 2005 T-SQL BEGIN DISTRIBUTED TRANSACTION (Transact-SQL)