博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle数据库查询通过一个待查询字段的值组装不同的条件
阅读量:6804 次
发布时间:2019-06-26

本文共 1249 字,大约阅读时间需要 4 分钟。

现在有个需求:

筛选框为应返机构,如果项目为拍卖项目,那么筛选框的应返机构需要匹配拍卖项目的应返机构字段值;如果项目为非拍卖项目,那么筛选框的应返机构需要匹配非拍卖项目的代理机构的字段值。其中拍卖项目和非拍卖项目保存在同一个表里面,用isAuction来区分,如果isAuction == 1则为拍卖项目,否则为非拍卖项目。

实现的sql(利用decode):

select uuid,

  isAuction,
  backMoney_total,
  backMoney_currencyType,
  backagent,
  agentname,
  decode(isAuction, 1, backAgent, agentname)
from spfeetradeback
where ((decode(isAuction, NULL, 1, 0) = 0) or agentname like '%天同证券%')
  and ((decode(isAuction, NULL, 1, 0) = 1) or backAgent like '%天同证券%');

天同证券是筛选框的值

如果项目为拍卖项目,那么(decode(isAuction, NULL, 1, 0) = 0) 为true,则忽略后面的“or agentname like '%天同证券%'”,而(decode(isAuction, NULL, 1, 0) = 1)为false,则执行“backAgent like '%天同证券%'”。所以当项目为拍卖项目的时候,上面的sql就相当于:

select uuid,

  isAuction,
  backagent,
  agentname,
  decode(isAuction, 1, backAgent, agentname)
from spfeetradeback
where backAgent like '%天同证券%';

如果是非拍卖项目,那么(decode(isAuction, NULL, 1, 0) = 0)为false,则执行“agentname like '%天同证券%'”,而(decode(isAuction, NULL, 1, 0) = 1)为true,则忽略“backAgent like '%天同证券%'”。所以当项目为非拍卖项目的时候,上面的sql就相当于:

select uuid,

  isAuction,
  backagent,
  agentname,
  decode(isAuction, 1, backAgent, agentname)
from spfeetradeback
where agentname like '%天同证券%';

                                                                                        ------>froest

转载于:https://www.cnblogs.com/God-froest/archive/2013/03/19/OracleDecode.html

你可能感兴趣的文章
SQL Server 事务
查看>>
Python变量、数据类型与运算符
查看>>
我的友情链接
查看>>
利用掌握的路由知识解决现实环境中的问题
查看>>
部署SCDPM 2012R2 2.部署SCDPM 2012R2
查看>>
我的友情链接
查看>>
shell 脚本1
查看>>
20160420作业
查看>>
python coding
查看>>
jquery美化select,自定义下拉框样式
查看>>
最近的一些感悟
查看>>
可以随意投射的屏幕之遐想
查看>>
Linux学习-02-远程连接SSH工具及密钥登录配置
查看>>
Python学习笔记-校验源与备份目录差异
查看>>
Zabbix监控Linux主机设置方法
查看>>
MySQL 性能优化的最佳20多条经验分享
查看>>
在RAID 5上做LVM 实验
查看>>
我的友情链接
查看>>
商业智能是什么
查看>>
古人养生长寿十大秘诀公开。
查看>>