在我们的数据库中,有些字段其值是按位表示的,即不同的位有不同的含义,比如用不同的位代表用户的不同权限或属性,该位为1时,表示用户有此权限或属性,为0则无此权限或属性等.相信有很多数据库为了效率也有类似的设计.
1. func_bitoper 【程序编程相关:大家有没有什么好的方法可以防止网页被恶意】
在c语言中提供了&, |, ~以及>>,<<等丰富的位操作符,如何通过sql语句实现对值的类似操作呢?下面给出我们常用的两个函数(其中执行&操作的函数不是吹的,比oracle 提供的bitand函数好用,oracle的函数在操作数较大时会出错),如果大家有类似的需求,只要参照其设计方法,可以很容易完成. 【推荐阅读:Apache2+php4.3.6+MyS】
换句话说,enable动作相当于与enable_mask进行或操作,disable动作相当于与~disable_mask进行与操作. 【扩展信息:原创:Tomcat和Apache的集成】
我们在工作中常常有这样的需求,要求将某个字段的某一位或多位置为1或0,输入参数in_value是待处理的值,enable_mask表示要将哪几位置为1,如要将bit0与bit2置为1,则enable_mask := power(2,0) + power(2,2); ,enable_mask为0表示没有需要置为1的位,同理disable_mask表示要将哪几位置为0,如要将bit1与bit3置为0,则disable_mask := power(2,1) + power(2,3); ,disable_mask为0表示没有需要置为0的位, 返回值为经过位操作后的值.
create or replace function func_bitoper(in_value in number,enable_mask in number,
disable_mask in number ) return number is l_enable number; ... 下一页