作者为:麦克马纳斯,鲁迅
在以这个作者为关键字搜索的时候找不到数据,原因是中间有了个逗号BookPostSearch.aspx?BookAuthor={0}",   Eval( "BookAuthor").ToString().Trim())%>sql += " select * from  Lib_BookIsbnInfo  where  BookAuthor like '%" + Request.QueryString["BookAuthor"].Replace("'", "''") + "%'";如何处理,假如作者有三个或者只有一个的情况也要考虑,求教

解决方案 »

  1.   

    假设你的逗号是or关系(而不是and),那么代码类似于:var sql = "select * from  Lib_BookIsbnInfo  where 1=1"; 
    if(Request.QueryString["BookAuthor"]!=null)
    {
      sql += " and(1=2";
      foreach(var author in Request.QueryString["BookAuthor"].Split(","))
        sql += " or BookAuthor like '%" + author.Replace("'", "''") + "%'";
      sql += “)";
    }
      

  2.   

    Request.QueryString["BookAuthor"].Replace("'", "''")  就是這裡出現的問題。。設一個斷點。看一下數據是什麼樣子。。就知道怎麼改了。。
      

  3.   


    sql += " select * from  Lib_BookIsbnInfo  where  BookAuthor in('"+Request.QueryString["BookAuthor"].ToString()+"');
      

  4.   


    BookPostSearch.aspx?BookAuthor={0}",   Eval( "BookAuthor").ToString().Trim())%>sql += " select * from  Lib_BookIsbnInfo  where CHARINDEX(','+BookAuthor+',',',Request.QueryString["BookAuthor"],')>0 ";
      

  5.   

    分割字符串
    string str= Request.QueryString["BookAuthor"].Replace("'", "''") ;
    sql += " select * from  Lib_BookIsbnInfo  where 1=1 and   BookAuthor ";
    foreach(string s in Regex.Split(str, ","))
    {
    sql+=" and (BookAuthor  like '%" +s.Replace("'", "''") + "%')";
    }
      

  6.   


    BookPostSearch.aspx?BookAuthor={0}",   Eval( "BookAuthor").ToString().Trim())%>sql += " select * from  Lib_BookIsbnInfo  where CHARINDEX(','+BookAuthor+',',','+'"+ Request.QueryString["BookAuthor"]+"'+',')>0 ";