举例:
现有一个表,假设其中有
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;      ...说明一下:表结构是别人定义的,我现在还没搞清楚为什么要这么定义。

解决方案 »

  1.   

    where (D=1 and E=0 and F=0 and 条件1) 
    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)
      

  2.   

    to hebo2005:
    多谢指教,可能我没表达清楚。
    上面举的例子只是为了说明问题,表中和条件有关系的字段字段可能不止3个,这样组合下来就是一个很大的数,
    而且我现在的查询并不需要or的数据,例如:我只要当D=1 and E=0 and F=0时,满足条件1的记录,
    或者D=1 and E=0 and F=1时,满足条件1 and 条件3的记录,以次类推。
      

  3.   


    你这个有点难了,hebo2005的已经可以实现你的功能了,就算用动态sql,你的判断条件也无法写呢,因为你的判断条件值是表中的所有记录字段,是变化的,就像你说的除非用游标遍历,否则如何实现每个查询的时候,where后面的条件不一样而且还不需要or关键字连接呢?不知道别的高手有没有办法,期待中......