Oracle数据库Bitand()函数用法(计算位移)
由于项目需要,经理要求我做一个可多选的下拉选框。我一听,so easy, 于是屁颠屁颠跑回座位,然后想想如何方便顺序的解决掉这个问题。
思路如下:为了简化,有字典表
(表 T1)
另外还有张表需要用到这个:
(表T2)
然后需要关联这个两个表做查询,查询出表T1的字典值,并做查询,如果要查询出含有1或者5的所有值。这个之后我就绞尽脑汁去想,除了拼接sql,之外还有没有其他方法,拙计啊,我苦思冥想了许久之后没有好的思路,然后随便在翻翻oracle函数,突然看到bitand这个函数,头脑灵光一闪,想到了下面这个方法。
在这之前,先介绍一下我们即将登场的英雄:bitand函数。
返回两个数值型数值在按位进行AND 运算后的结果。
语法 BITAND(nExpression1, nExpression2)
参数 nExpression1, nExpression2
指定按位进行AND 运算的两个数值。如果 nExpression1 和 nExpression2 为非整数型,那么它们在按位进行 AND 运算之前转换为整数。
Oracle bitand( )函数返回值类型:数值型
说明
BITAND( ) 将 nExpression1 的每一位同 nExpression2 的相应位进行比较。如果 nExpression1 和 nExpression2 的位都是 1,相应的结果位就是 1;否则相应的结果位是 0。
例如:x = 5 (二进制:101), y = 6(二进制:110)
bitand(x,y) => 4(二进制:100)
利用这个特性,我改写了一下T1表:
在把T2表中的cate_ids加起来,如图:
接下来就是查询了:
1.查询拥有类型3或类型5的(类型3的值加上类型5的值为20)
select t.* from T2 t where bitand(to_number(t.cate_ids), 20)>0
2.查询T2中某列拥有的类型:
这个相对纯粹用sql有点麻烦,所有写了个函数来实现,具体分为两步:
1)通过T2中cate_ids查询出所含的类型:(比如cate_ids值为10)
select t.cate_value from t_categories t where bitand(to_number(t.cate_code), 10)= to_number(t.cate_code)
2)利用游标,讲查询出的cate_value拼接成一个字符串。
这是一个中解决思路,它没有需要程序来控制,单纯利用sql来完成,效果还不错。主要这段时间,我在学习oracle,就行将所学立马用上,这样才有些成就感。
---------------------
作者:sread
来源:CSDN
原文:https://blog.csdn.net/sread/article/details/9971471
版权声明:本文为博主原创文章,转载请附上博文链接!
Oracle数据库Bitand()函数用法(计算位移)相关推荐
- oracle数据库 日期函数用法
oracle数据库 日期函数用法 –Oracle trunc()函数的用法 /日期******/ 1.select trunc(sysdate) from dual --2013-01-06 今天的日 ...
- oracle连续周数,详细讲解Oracle数据库的“周数计算”
详细讲解Oracle数据库的"周数计算"以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! --日期计算 ...
- oracle 数据库 字符串函数
oracle 数据库 字符串函数 介绍oracle对字符串的操作函数,如图所示,测试字段为:STUDENT 表的 STUNAME 字段 ps:oracle字符串索引从1开始 1.定位索引函数:inst ...
- oracle 的wecate函数,1.Oracle中decode()函数用法
1.Oracle中decode函数用法 含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THEN RETURN(翻 ...
- oracle+decode函数用法,oracle中decode函数用法
oracle中decode函数用法以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! DECODE函数相当于一条件语句(IF ...
- oracle 怎么计算年数,详细讲解Oracle数据库的“周数计算”
详细讲解Oracle数据库的"周数计算" 2008-03-18 eNet&Ciweek 2)iw的算法为星期一至星期日算一周,且每年的第一个星期一为第一周, 例如20050 ...
- Oracle数据库之rownum,ORACLE数据库中Rownum用法详解
ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(,& gt;=,=, ...
- Oracle 的 decode 函数用法
Oracle 中 decode 函数用法 decode函数的含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THE ...
- Oracle数据库常用函数总结
我本楚狂人,凤歌笑孔丘 ------唐·李白<庐山谣寄卢侍御虚舟> Oracle数据库常用函数总结 一.字符串函数 二.数值函数 三.时间函数 一.字符串函数 显示员工姓名,其中首字母大写 ...
最新文章
- Unity的Deferring the Resolution of Objects
- sql 字符串比较大小_SQL 数据分析2:简单查询
- uni-app实现上拉加载更多
- 【Python学习】 - Matplotlib二维绘图 - plt.matshow()和plt.imshow()区别对比
- OC语言-04-OC语言-核心语法
- IOI2019团体总分前十排名:美国队夺魁,中国队第三,亚洲占六席
- python文件写入_python读写不同编码txt文件
- web逻辑思维题目_有关于最难的逻辑思维题目及答案
- PMP考试【6】三点估算法 PERT计划评审技术
- 调试EasyDarwin开源项目EasyCamera-HK接入海康IPCamera 摄像机所遇到的大坑
- Information Bottleneck 信息瓶颈
- AcWing237. 程序自动分析
- 计算机科学 在职双证,计算机专业在职研究生有双证的吗?
- Facade与Adapter模式应用
- 获取post请求的几种常见方式
- 动态规划算法 | 最长递增子序列
- 失、思与诗-给那个在地坛里玩耍的孩子
- Candy Crush Soda 赏析
- 视觉检测系统是怎么检测尺寸的?
- 烧菜技巧 如何炒辣椒油
热门文章
- diy 扫地机器人 滚刷_扫地机器人滚刷和边刷分别有什么作用
- 传奇列表上传登录器公告小窗口怎么修改
- 均值已知检验方差_χ2检验教案:独立性检验的z统计量
- R Error: BiocParallel errors 1 remote errors, element index: 1 506 unevaluated and other errors解决办法
- CSS中的line-height,height与line-height
- js、jquery操作复选框checkbox总结(单个/多个获取选中值、初始化设置默认选中值、全选反选)
- 【通信】基于OFDMA系统的多用户资源分配求解论附文和MATLAB代码
- Java基础 println print 实现输出换行
- For循环的简单实例
- 2021赤峰二中高考成绩查询,2021年赤峰高考状元名单公布,赤峰文理科状元是谁多少分...