解决方案 »

  1.   

    用存储过程 用IF ELSE分阶段过滤。
      

  2.   


    如果lz使用的是网页相关处理的话,最好的办法是使用过滤器,或者是筛选器,来定位对应的sql语句。 
    如果使用的是hibernate自动生成的sql语句, 也可以进行优化。 
    sql 本身有lz所说的短路机制。大部分的消耗应该在拼接解析sql语句上。 lz可以用查查看io的情况。参考
      

  3.   


    您说的是这样么?string sql="select fileds from table where 1=1";
    if(!string.isnullorempty(供应商))
    {
     sql+=" and 供应供应='"++"'"
    }
    if(状态!="")
    {
    sql+=" and 状态=";
    }
      

  4.   


    您说的是这样么?string sql="select fileds from table where 1=1";
    if(!string.isnullorempty(供应商))
    {
     sql+=" and 供应供应='"++"'"
    }
    if(状态!="")
    {
    sql+=" and 状态=";
    }
    可以封装在存储过程里面 程序调用就OK了如果在程序端来写的话难写。