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
*/
分享到:
相关推荐
首先在oracle中没有datediff()函数 可以用这个方法在oracle中实现该函数的功能。
oracle 函数大全oracle 函数大全oracle 函数大全oracle 函数大全oracle 函数大全oracle 函数大全oracle 函数大全
oracle函数大全 oracle函数大全 oracle函数大全
本文档详细介绍了如何在Oracle数据库中实现像C#等其它编程语言中Split函数来拆分字符的功能。例子简单易懂,并附有详细的实现过程。
简单的oracle 时间比较函数,自己在网上找到并加以整理出来。
oracle中的sql函数说明,详细描述函数的各个参数。
NULL 博文链接:https://yangkai.iteye.com/blog/754447
oracle函数介绍 1 著名函数之单值函数 pdf oracle函数介绍 2 非著名函数之单值函数 pdf oracle函数介绍 3 著名函数之聚合函数 pdf oracle函数介绍 4 非著名函数之聚合函数 pdf oracle函数介绍 5 分析函数简述 ...
ORACLE函数介绍 ORACLE函数介绍 ORACLE函数介绍 ORACLE函数介绍 ORACLE函数介绍 ORACLE函数介绍
oracle 函数大全 参考函数 手册 速查 chm格式。。。
ORACLE crc3函数,将字符类型转换成唯一的数字类型,例如CSDN,经过crc32函数转换后,得到的值为-1016176976
oracle中 substring函数的使用
sqlserver实现Oracle中Lpad和Rpad函数
用bitand表示异或的SQL脚本函数,很实用, 欢迎下载~
ORACLE函数.pdfORACLE函数ORACLE函数.pdf
Oracle中常用的函数,没事的时候可以看看。
Oracle字符相似度函数。在sql语句中直接用该函数来计算2个字符串相似度。
oracle中基本函数,包含字符函数、数值函数、日期函数等
oracle开窗函数学习技巧总结,主要讲解over函数的使用的哦
关于oracle权限的一些函数,蛮有用的