由于项目需要,经理要求我做一个可多选的下拉选框。我一听,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()函数用法(计算位移)相关推荐

  1. oracle数据库 日期函数用法

    oracle数据库 日期函数用法 –Oracle trunc()函数的用法 /日期******/ 1.select trunc(sysdate) from dual --2013-01-06 今天的日 ...

  2. oracle连续周数,详细讲解Oracle数据库的“周数计算”

    详细讲解Oracle数据库的"周数计算"以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! --日期计算 ...

  3. oracle 数据库 字符串函数

    oracle 数据库 字符串函数 介绍oracle对字符串的操作函数,如图所示,测试字段为:STUDENT 表的 STUNAME 字段 ps:oracle字符串索引从1开始 1.定位索引函数:inst ...

  4. oracle 的wecate函数,1.Oracle中decode()函数用法

    1.Oracle中decode函数用法 含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THEN RETURN(翻 ...

  5. oracle+decode函数用法,oracle中decode函数用法

    oracle中decode函数用法以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! DECODE函数相当于一条件语句(IF ...

  6. oracle 怎么计算年数,详细讲解Oracle数据库的“周数计算”

    详细讲解Oracle数据库的"周数计算" 2008-03-18 eNet&Ciweek 2)iw的算法为星期一至星期日算一周,且每年的第一个星期一为第一周, 例如20050 ...

  7. Oracle数据库之rownum,ORACLE数据库中Rownum用法详解

    ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(,& gt;=,=, ...

  8. Oracle 的 decode 函数用法

    Oracle 中 decode 函数用法 decode函数的含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THE ...

  9. Oracle数据库常用函数总结

    我本楚狂人,凤歌笑孔丘 ------唐·李白<庐山谣寄卢侍御虚舟> Oracle数据库常用函数总结 一.字符串函数 二.数值函数 三.时间函数 一.字符串函数 显示员工姓名,其中首字母大写 ...

最新文章

  1. Unity的Deferring the Resolution of Objects
  2. sql 字符串比较大小_SQL 数据分析2:简单查询
  3. uni-app实现上拉加载更多
  4. 【Python学习】 - Matplotlib二维绘图 - plt.matshow()和plt.imshow()区别对比
  5. OC语言-04-OC语言-核心语法
  6. IOI2019团体总分前十排名:美国队夺魁,中国队第三,亚洲占六席
  7. python文件写入_python读写不同编码txt文件
  8. web逻辑思维题目_有关于最难的逻辑思维题目及答案
  9. PMP考试【6】三点估算法 PERT计划评审技术
  10. 调试EasyDarwin开源项目EasyCamera-HK接入海康IPCamera 摄像机所遇到的大坑
  11. Information Bottleneck 信息瓶颈
  12. AcWing237. 程序自动分析
  13. 计算机科学 在职双证,计算机专业在职研究生有双证的吗?
  14. Facade与Adapter模式应用
  15. 获取post请求的几种常见方式
  16. 动态规划算法 | 最长递增子序列
  17. 失、思与诗-给那个在地坛里玩耍的孩子
  18. Candy Crush Soda 赏析
  19. 视觉检测系统是怎么检测尺寸的?
  20. 烧菜技巧 如何炒辣椒油

热门文章

  1. diy 扫地机器人 滚刷_扫地机器人滚刷和边刷分别有什么作用
  2. 传奇列表上传登录器公告小窗口怎么修改
  3. 均值已知检验方差_χ2检验教案:独立性检验的z统计量
  4. R Error: BiocParallel errors 1 remote errors, element index: 1 506 unevaluated and other errors解决办法
  5. CSS中的line-height,height与line-height
  6. js、jquery操作复选框checkbox总结(单个/多个获取选中值、初始化设置默认选中值、全选反选)
  7. 【通信】基于OFDMA系统的多用户资源分配求解论附文和MATLAB代码
  8. Java基础 println print 实现输出换行
  9. For循环的简单实例
  10. 2021赤峰二中高考成绩查询,2021年赤峰高考状元名单公布,赤峰文理科状元是谁多少分...