http://hi.baidu.com/hihelens/blog/item/42413b2a19f27f28d52af10e.html
bitand ,按位与操作。
select bitand(0,0) from dual --0
select bitand(1,0) from dual --0
select bitand(0,1) from dual --0
select bitand(1,1) from dual --1
另外,oracle本身没有bitor,bitxor函数,但是可以实现和bitand的转换:
BITOR(x,y) = (x + y) - BITAND(x, y)
BITXOR(x,y) = BITOR(x,y) - BITAND(x,y) = (x + y) - BITAND(x, y) * 2
************************************************
http://hi.baidu.com/flydragon1125/blog/item/c8cd247a6fc849e02f73b33b.html
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
-----------------------------------------------------------------------------
ORACLE中的BITOR和BITXOR
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;
hextoraw是一个用十六进制转换的函数,所以hextoraw(13)实际是
十六进制:13
十进制:19(16+3)
二进制:10011
hextoraw(2)的二进制为10
所以
select utl_raw.bit_and(hextoraw(13),hextoraw(2)) from dual
=select bitand(19,2) from dual
=(10011) and (10)=(11) and (10)=(10)='02'
注: 根据说明utl_raw.bit_and与bitand的不同是utl_raw.bit_and在将两个数字转换为二进制后,会忽略掉多余的位数.
****************************************************
select BIN_TO_NUM(1,0,1) a,bin_to_num(1,0) b from dual
;
------------利用oracle提供的函数使用方便
select sum(data1)
from (select substr('101', rownum, 1) * power(2, length('101') - rownum) data1
from dual connect by rownum <= length('101'))
-------自己SQL实现,稍微复杂,但是方便之处,只需简单修改,就可以转换成8进制、16进制等
select bitand(7,4) from dual;
/*
111
100
-----
100 = 4
*/
select (7+4-bitand(7,4)) from dual;
/*
111
100
-----
111 = 7
*/
select (7+4-bitand(7,4)*2) from dual;
/*
111
100
-----
011 = 3
*/
分享到:
相关推荐
7. 位操作函数:如BITAND(按位与)、BITOR(按位或)、BITNOT(按位非)等,处理二进制数据。 8. 非标准函数:如DBMS_OUTPUT.PUT_LINE(输出调试信息)、USER(返回当前用户)等,属于Oracle特定的实用工具函数。 ...
用bitand表示异或的SQL脚本函数,很实用, 欢迎下载~
7. **位操作函数**:处理二进制数据,如`BITAND()`进行位与运算,`BITNOT()`取反,`BITOR()`位或。 8. **系统信息函数**:获取数据库相关信息,如`USER`获取当前用户,`SESSION_USER`和`SYSTEM_USER`分别获取会话和...
- `BITAND(num1, num2)`:返回num1和num2的按位与结果。 - `BITOR(num1, num2)`:返回num1和num2的按位或结果。 - `BITXOR(num1, num2)`:返回num1和num2的按位异或结果。 9. **连接查询相关的函数**: - `...
- `BITAND`:执行按位与操作。 - `BITOR`:执行按位或操作。 - `BITNOT`:执行按位非操作。 8. **分组和窗口函数**: - `RANK`, `DENSE_RANK`, `ROW_NUMBER`:在分组后为每行分配唯一的排名。 - `LEAD`, `LAG`...
9. **位运算函数**:BITAND()执行位与运算,BITNOT()进行位非运算,BITOR()执行位或运算。 10. **游标和循环函数**:CURSOR用于定义游标,FETCH获取游标中的数据,OPEN, CLOSE用于打开和关闭游标。 11. **递归函数...
位操作函数如BITAND、BITNOT、BITOR和BITXOR,适用于处理二进制数据。例如,BITAND(5, 3)将返回它们的按位与结果,即1(二进制表示:5是101,3是011,按位与后是001)。 八、分组和排序函数 RANK、DENSE_RANK和ROW_...
- **BITAND(x, y)**:执行两个整数`x`和`y`之间的位与运算。 - **BITOR(x, y)**:执行两个整数`x`和`y`之间的位或运算。 - **CEIL(x)**:返回不小于`x`的最小整数。 - **COS(x)**:返回角度`x`的余弦值,`x`是以弧度...
7. **其他函数**:包括位运算函数(BITAND、BITOR等)、级联查询的CONNECT_BY_ROOT,以及用于处理XML数据的XML相关的函数。 博客链接提到的iteye.com是一个知名的IT技术分享平台,博主Superivan分享的Oracle函数...
该源码包包含了一系列Oracle中的常见函数,如`replace()`、`trunc()`、`floor()`和`bitand()`,这些都是在数据处理中非常实用的函数。让我们逐一了解这些函数的功能及其在Teradata中的实现。 1. **Replace() 函数**...
8. **位运算函数**:如`BITAND()`进行按位与运算,`BITNOT()`进行按位非运算,`BITOR()`进行按位或运算。 9. **游标函数**:`CURSOR()`用于定义和打开游标,`FETCH`用于获取数据,`CLOSE`关闭游标。 10. **系统...
为了更具体地理解自定义聚集函数的实现,我们可以通过一个具体的例子来说明——创建一个用于处理权限位运算(如bitand)的聚集函数。首先,我们需要定义一个类型`permission_bitand`,其中包含上述四个关键的聚集...
7. **位操作函数**:如BITAND(), BITOR(), BITHASH()等,这些函数在处理二进制数据或者进行高效位运算时很有用。 8. **序列函数**:NEXTVAL()和CURRVAL()用于生成和访问序列,常用于自增主键。 9. **系统信息函数*...
- `BITAND(x,y)`:返回x和y的按位与结果,适用于整数。 - `CEIL(x)`:返回大于或等于x的最小整数。 - `COS(x)`:返回x的余弦值,x是以弧度表示的角度。 - `COSH(x)`:返回x的双曲余弦值。 - `EXP(x)`:返回e...
本文将详细介绍Oracle中的常见函数及其用法,包括数字处理函数、日期处理函数、字符处理函数等。 #### 数学函数 ##### 1. ROUND(m,[n]) 该函数用于对数值`m`进行四舍五入处理。如果指定了第二个参数`n`,则结果将...
SQL函数大总结 实用的sql函数 ABS(x) 函数,此函数用来返回一个数的绝对值。...BITAND(x,y)函数,返回X和Y的与结果。X和Y必须为非负整数。注意没有BITOR函数,但是在UTL_RAW包中有用 于RAW值的位操作符。
如BITAND、BITOR、LSHIFT和RSHIFT,用于处理二进制数据。 十二、系统信息函数 如DBMS_METADATA获取数据库对象的元数据,USERENV获取当前会话的信息。 以上只是Oracle函数大全的一部分内容,实际的CHM文件中还包含...
1. `BITAND(number1, number2)`: 对两个数进行按位与运算。 2. `BITOR(number1, number2)`: 对两个数进行按位或运算。 九、分组和分析函数 1. `GROUP BY column1, column2, ...`: 用于分组查询。 2. `ROLLUP(column...
根据提供的标题“Oracle常用函数”及其描述,我们可以深入探讨Oracle数据库中广泛使用的各种函数,特别是数值(Number)函数。这些函数在处理数据时极为有用,能够帮助我们执行一系列数学计算,从而更好地理解和操作...
SELECT BITAND(15, 9) result FROM dual; ``` **结果**: ``` RESULT ------- 9 ``` #### CARDINALITY **语法**: `CARDINALITY(collection_expr)` **用法**: 返回集合`collection_expr`中元素的数量。 **参数**: `...