日期:2014-05-18  浏览次数:20804 次

关于多条件查询的问题
我用JSP做的一个根据三种条件查询的页面,我想的是判断其中三朝个表单,只要其中一个不为空就执行下面else   中的SQL语句,但是好象不对,高手们帮我分析分析,或者是多条件查询有更好的办法吗?
代码如下:
String   key,keyy,keyyy;
       
                    key=request.getParameter( "key ");keyy=request.getParameter( "keyy ");keyyy=request.getParameter( "keyyy ");     if((request.getParameter( "key ")==null   ||   request.getParameter( "key ").trim().equals( " "))   &&   (request.getParameter( "keyy ")==null   ||   request.getParameter( "keyy ").trim().equals( " "))   &&     (   request.getParameter( "keyyy ")==null   ||   request.getParameter( "keyyy ").trim().equals( " ")))
                    sql= "select   *   from   sms_LH_content   order   by   SENDTIME   desc ";
            else
            {
                    sql= "select   *   from   sms_LH_content   where   (to_char(sendtime, 'yyyy-mm-dd ')=( ' "+key+ " '))   or     (FENLEI=   ' "+keyy+ " ')     or   (CONTENT   like   '% "+keyyy+ "% ')   order   by   SENDTIME   desc ";
            }


------解决方案--------------------
那就比较麻烦了,试试:

String key = request.getParameter( "key ")==null? " ":request.getParameter( "key ");
String keyy = request.getParameter( "keyy ")==null? " ":request.getParameter( "keyy ");
String keyyy = request.getParameter( "keyyy ")==null? " ":request.getParameter( "keyyy ");

String sql= "select * from sms_LH_content ";
if(key!=null && !key.equals( " "))
{
sql+= " where to_char(sendtime, 'yyyy-mm-dd '= ' "+key+ " ') ";
if(keyy!=null && !keyy.equals( " "))
{
sql+= " or FENLEI= ' "+keyy+ " ' ";
}
if(keyyy!=null && !keyyy.equals( " "))
{
sql+= " or CONTENT like '% "+keyyy+ "% ' ";
}
}
else if(keyy!=null && !keyy.equals( " "))
{
sql+= " where FENLEI= ' "+keyy+ " ' ";
if(keyyy!=null && !keyyy.equals( " "))
{
sql+= " or CONTENT like '% "+keyyy+ "% ' ";
}
}
else if(keyyy!=null && !keyyy.equals( " "))
{
sql+= " where CONTENT like '% "+keyyy+ "% ' ";
}
sql+= " order by SENDTIME desc ";
------解决方案--------------------
其实楼主的代码和ls的差不多,可行