oracle case when 多条件控制语句

izj 2012-04-20 09:11:43
RT

oracle数据库中

已知 :
select
t.a,
t.b
from
table1 t , table2 t2
where
t.c=t2.c and
t.d =
case ¶m='01' then '1' --想在此处多加一条语句。像这样: case ¶m ='01' then t.d='1' and t.e='1' .但这样写 编译不通过。尝试用if 语句 编译也通不过。现在需要这样的逻辑判断,请问各位大侠该如何实现啊
case ¶m ='02' then '2'
end case
and t.f = 0;



问题描述完毕。
简单来说就是想做这样的判断,当参数为01的时候,想让t.d='1' 并且 and t.e='1' 。
当参数为02的时候。想让t.d='2'并且 and t.e='2'.

...全文
3176 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
izj 2012-04-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
decode的效率还是很高的,我觉得这个不需要担心吧,再来说其实也可以写case when,只不过case完了后还是和decode一样,不能把最后的那个条件一块并入前面的条件
[/Quote]


我还以为oracle会提供什么函数来实现我要的功能呢。这种语句用PL/SQL写简单多了
不过还是谢谢你了
lxyzxq2008 2012-04-22
  • 打赏
  • 举报
回复
decode的效率还是很高的,我觉得这个不需要担心吧,再来说其实也可以写case when,只不过case完了后还是和decode一样,不能把最后的那个条件一块并入前面的条件
izj 2012-04-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
SQL code


--楼主是不是想要这个样子
select
t.a,
t.b
from
table1 t , table2 t2
where
t.c=t2.c and
t.d = decode(&param,'01','1','02','2')
and t.e=decode(&param,'01','1','02','2……
[/Quote]

是的。要的就是这个。这样可以解决问题,但相当于写了两遍case when 呢

lxyzxq2008 2012-04-21
  • 打赏
  • 举报
回复

--楼主是不是想要这个样子
select
t.a,
t.b
from
table1 t , table2 t2
where
t.c=t2.c and
t.d = decode(¶m,'01','1','02','2')
and t.e=decode(¶m,'01','1','02','2')
izj 2012-04-21
  • 打赏
  • 举报
回复
这个问题困惑我几天了。。。各位帮帮忙啊。。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧