惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
V
Visual Studio Blog
Microsoft Azure Blog
Microsoft Azure Blog
MyScale Blog
MyScale Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
罗磊的独立博客
N
Netflix TechBlog - Medium
M
MIT News - Artificial intelligence
G
Google Developers Blog
阮一峰的网络日志
阮一峰的网络日志
P
Proofpoint News Feed
小众软件
小众软件
Engineering at Meta
Engineering at Meta
D
DataBreaches.Net
S
SegmentFault 最新的问题
H
Help Net Security
量子位

博客园 - 阿泰

水晶报表问题交流与答疑帖-2011/07-08-09 水晶报表问题交流与答疑帖-2011/04-05-06 水晶报表问题交流与答疑帖-2010/07-08-09【关闭】 【公告】如果发现博客中图片或文件丢失,请在本贴中回复中贴上URL [转]2010年Gartner企业绩效管理四分区 重要通知:为了能提升答疑质量,本博客的答疑转移到CSDN论坛 2009年11月答疑贴 VS2010beta2中RDLC与水晶报表之简单评测 【水晶报表内功心法】--信手拈来,掌控对象 之 多值参数传入 - 阿泰 2009年10月份答疑贴 Oracle 00600 错误解决方法 2009年9月份答疑帖 2009年8月份答疑贴 【水晶报表内功心法】--完美Excel(下) 【水晶报表内功心法】--完美Excel(上) 【水晶报表内功心法】--公式、函数与运行时总计 【水晶报表内功心法】--第一阶段小结 【水晶报表内功心法】--数据过滤 【水晶报表内功心法】--信手拈来,掌控对象
Oracle中可选参数的处理
阿泰 · 2011-03-28 · via 博客园 - 阿泰

今天遇到这么个小问题,说来也常见。就记录一下。

查询 一个输入范围 内的 数据: Select * from table1 Where fld1>=A and fld<=B

其中A,B均为可选输入项目,有如下几种组合:

1:A有值,B无值,即 Select * from table1 Where fld1>=A

2:A有值,B有值,即 Select * from table1 Where fld1>=A and fld<=B

3:A无值,B无值,即 Select * from table1 

4:A无值,B有值,即 Select * from table1 Where  fld<=B

基本语法如下(Oracle),其中fld1字段为数值型函数

Select * from table1

Where 

decode('&1','',1,fld1)>=to_number(decode('&1','',1,'&1'))

and

decode('&2','',1,fld1)<=to_number(decode('&2','',1,'&2'))

基本思路是:

如果输入的值为空,则主动给一个1,将比对字段也设为1。
这样当值为空时,这个条件转化为1>=1,恒定为true,从而使该条件失效(说有效也可以)。

同理,如果只是对于一个可选参数,就是

Select * from table1

Where 

decode('&1','',1,fld1)>=to_number(decode('&1','',1,'&1'))