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
值型
返回两个数值型数值在按位进行 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