举例:
现有一个表,假设其中有
A、B、C、D、E、F 6个字段,要实现如下的查询:
有3个条件:条件1,条件2,条件3,这三个条件的组合方式由D、E、F字段的值的组合来定,D、E、F的值可以为0或者1,
如果为1,其对应的条件将出现在where语句中,否则不出现。例如,如果D=1,E=0,F=0,则条件语句应该为:where 条件1;
如果D=1,E=0,F=1,则条件语句应该为:where 条件1 and 条件3;
如果D=0、E=1,F=1,则条件语句应该为:where 条件2 and 条件3; ...说明一下:表结构是别人定义的,我现在还没搞清楚为什么要这么定义。
现有一个表,假设其中有
A、B、C、D、E、F 6个字段,要实现如下的查询:
有3个条件:条件1,条件2,条件3,这三个条件的组合方式由D、E、F字段的值的组合来定,D、E、F的值可以为0或者1,
如果为1,其对应的条件将出现在where语句中,否则不出现。例如,如果D=1,E=0,F=0,则条件语句应该为:where 条件1;
如果D=1,E=0,F=1,则条件语句应该为:where 条件1 and 条件3;
如果D=0、E=1,F=1,则条件语句应该为:where 条件2 and 条件3; ...说明一下:表结构是别人定义的,我现在还没搞清楚为什么要这么定义。
解决方案 »
- SQL语句参数化问题
- 求个SQL语句 ,请诸位大哥帮帮忙
- 【求助】oracle的系统表和索引可以删除吗?
- 请各位oracle高手帮帮小妹,小妹是个刚接触oracle两周的菜鸟~~~
- oracle安装在小型机上CPU利用率居高不下
- Inner join on and left join on
- 如何查看oracle里面试图 view1 存不存在,如果存在就删除
- 请大侠们帮忙 :怎样通过oem来访问局域网中linux上的oracle ?
- 有什么命令可以知道对一句sql的编译是否能够通过,而不去执行这sql?
- oracle报表数据源连接是怎样连接的?
- 触发器替换固定时间
- 美女求助:通过SQL语句如何获取1到64中未存于表中的数字
or (D=1 and E=0 and F=1 and 条件1 and 条件3)
or (D=0 and E=1 and F=1 and 条件2 and 条件3)
多谢指教,可能我没表达清楚。
上面举的例子只是为了说明问题,表中和条件有关系的字段字段可能不止3个,这样组合下来就是一个很大的数,
而且我现在的查询并不需要or的数据,例如:我只要当D=1 and E=0 and F=0时,满足条件1的记录,
或者D=1 and E=0 and F=1时,满足条件1 and 条件3的记录,以次类推。
你这个有点难了,hebo2005的已经可以实现你的功能了,就算用动态sql,你的判断条件也无法写呢,因为你的判断条件值是表中的所有记录字段,是变化的,就像你说的除非用游标遍历,否则如何实现每个查询的时候,where后面的条件不一样而且还不需要or关键字连接呢?不知道别的高手有没有办法,期待中......