oracle语句问题

jun471537173 2012-08-01 11:36:59
默认情况下:where 条件语句1;
当有其他查询条件时,要让条件语句1失效,目前是这样写的:where 其他条件 or 1=0 and 条件语句1。
请问还有其他写法吗?上面这样写查起来很慢耶。。。
...全文
94 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qldsrx 2012-08-01
  • 打赏
  • 举报
回复
如果是拼接字符串形式的,你程序里处理条件判断后拼接一个最后的SQL字符串给它。
woaichenkaili 2012-08-01
  • 打赏
  • 举报
回复
是的 1楼的正解
bdmh 2012-08-01
  • 打赏
  • 举报
回复
这就行了,只要保证 and 前面不符合 ,后面就不用了
jun471537173 2012-08-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 4 楼 的回复:
看了一下解释计划,上面语句慢的原因是:
select * from tableA where id in (select aid from tableB where name in ('123')) or 1=0会执行全表扫描,但select * from tableA where id in (select aid from tableB where name i……
[/Quote]
我是9i的,10g的没测过。。。
qldsrx 2012-08-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
看了一下解释计划,上面语句慢的原因是:
select * from tableA where id in (select aid from tableB where name in ('123')) or 1=0会执行全表扫描,但select * from tableA where id in (select aid from tableB where name in ('123'))这句就不……
[/Quote]
你的Oracle版本是不是有问题?我10G的版本上测试了下,两者写法的解释计划完全一样,遇到OR 1=0会直接忽略此条件的。
熙风 2012-08-01
  • 打赏
  • 举报
回复
最好少用in
jun471537173 2012-08-01
  • 打赏
  • 举报
回复
看了一下解释计划,上面语句慢的原因是:
select * from tableA where id in (select aid from tableB where name in ('123')) or 1=0会执行全表扫描,但select * from tableA where id in (select aid from tableB where name in ('123'))这句就不会进行全表扫描,怎么办啊

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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