小弟是新手,希望大家支持。
  小弟现在要写一个select语句,但where条件是动态的。
  如:可根据bug_id,或是bug_reported_user,或是bug_reported_date,bug_last_update_date,或是bug_assigned_user等等条件,这些条件可以任意组合。
  请问这样的SQL 语句怎么写呀?

解决方案 »

  1.   

    string sql ="";
    if(bug_id!="") sql == and bug_id="条件" ;
    同上
    同上
    同上
    同上
    if(sql!="")
    sql = sql.Substring(0,4);SQL语句="select * from table where sql";
      

  2.   

    谢谢回复。
     一直在想,如果只选一个条件时,如何才能去掉and,  用substring.不错。
     还有就是可能什么条件都不选,就可查找所有的bug。那where就不能放在SQL语句中了
      

  3.   

    一直在想,如果只选一个条件时,如何才能去掉and,  用substring.不错。
     还有就是可能什么条件都不选,就可查找所有的bug。那where就不能放在SQL语句中了------------------------------------这只不过是简单的字符串处理问题啊
      

  4.   

    string sqlWhere ="";
    if(bug_id!="") sqlWhere ==" and bug_id="+ bug_id;
    同上
    同上
    同上
    同上
    每个and前加个空格string sql="select * from table where 1=1 "+sqlWhere ;
      

  5.   

    下面的应该是sqlWhere+=  下面的条件
      

  6.   

    string sql="select * from table1"
    if (bug_id!="")
        sql = sql + " where bug_id=" + bug_id;
    else
        sql = sql + " where 1=1";
    if(data!="")
        sql = sql + " and date=" + date;
    else
        sql = sql + " and 1=1";
    ......
      

  7.   

    谢谢,大家的支持。这个SQL 语句已经搞定。
     而且如:report_user可能同时选几个。
     if (report_user != null)
    {
       sql = sql + "report_user in " + "(" + report_user + ")"
       ..
       ..
    }
     请问一下,这种sql,在存储过程中能否实现了。不知道应该怎么实现
      

  8.   

    CREATE PROCEDURE sp_DeleteMember
    (
    @id  nvarchar(1000),
    @language_ver nvarchar(50)
    )
    AS
    Declare @strSQL nvarchar(4000)
    Set @strSQL = 'delete From t_member_user where Language_ver='''+@language_ver+''' and id in(' +@id +')'
    Exec (@strSQL)
    GO