您的位置:首页 > 其它

【转】bitand( ) 函数用法

2016-03-01 20:44 295 查看
bitand( ) 函数

返回两个数值型数值在按位进行 AND 运算后的结果。

语法

BITAND(nExpression1, nExpression2)

参数

nExpression1, nExpression2

指定按位进行 AND 运算的两个数值。如果 nExpression1 和 nExpression2 为非整数型,那么它们在按位进行 AND 运算之前转换为整数。

返回值类型

数值型

说明

BITAND( ) 将 nExpression1 的每一位同 nExpression2 的相应位进行比较。如果 nExpression1 和 nExpression2 的位都是 1,相应的结果位就是 1;否则相应的结果位是 0。

下表列出对 nExpression1 和 nExpression2 按位进行 AND 运算的结果:

nExpression1 位 nExpression2 位 结果位

0 0 0

0 1 0

1 1 1

1 0 0

bitand( ) 函数示例

x = 5 && 二进制为 0101

y = 6 && 二进制为 0110

? bitand(x,y) && 返回值 4,二进制为 0100

bitlshift( ) 函数

返回一个数值型数值向左移动给定位后的结果。

语法

BITLSHIFT(nExpression1, nExpression2)

参数

nExpression1

指定要左移的数值。如果 nExpression1 不是整数,那么在左移之前,将转换成整数。

nExpression2

指定要左移的位数。如果 nExpression2 不是整数,那么将转换成整数。

返回值类型

数bitlshift( ) 函数示例

x = 5 && 二进制为 0101

y = 1 && 左移一位

? bitlshift(x,y) && 返回值 10,二进制为 1010

值型

ORACLE中只有BITAND而没有BITOR, BITXOR

原因是,有了BITAND, 很容易实现BITOR和BITXOR

BITOR(x,y) = (x + y) - BITAND(x, y);

BITXOR(x,y) = BITOR(x,y) - BITAND(x,y) = (x + y) - BITAND(x, y) * 2;

比如,A表存放3个通知方式类型,其值分别是2的0次幂、1次幂、2次幂,

ID NAME VAL

1 短信 1

2 邮件 2

3 即时通讯 4

B表存放一些功能对应的通知方式的值之和,

ID FUNCNAME TZFS

1 会议管理 3

2 公告通知 7

3 信息报送 2

现在,列出来B表的每个功能对应都开通了那些功能(名称)。

where ...and bitand(B.TZFS,A.VAL)>0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: