exec('SELECT * FROM DB_User_Learn WHERE UserID LIKE '+@U+' OR UserID IN ('+@UserID+')')
上面这样的一句语言 我对 @U 传的值是 %0019%  @UserID 为 空字符串运行的时候提示  0019附近有语法错误,请高手指点下要怎么改,谢谢了

解决方案 »

  1.   

    应该是@UserID 为 空字符串时 会出异常,可以试试这样string sql = "SELECT * FROM DB_User_Learn WHERE UserID LIKE %" + @U+ "%";
    if(@UserID != "")
       sql += " or UserID IN ("+@UserID+")";注:@U 只需要传具体值就可以了,两个百分号已放入SQL中;也可以用你之前的
      

  2.   

    exec('SELECT * FROM DB_User_Learn WHERE UserID LIKE '''+@U+''' OR UserID IN ('+@UserID+')')
      

  3.   


    like中改成   LIKE '%" + @U+ "%'",是字符串类型要加引号!!!
      

  4.   

    应该类似二楼说的,你那like附近要加当引号
    ,不加的结果会是SELECT * FROM DB_User_Learn WHERE UserID LIKE %0019%,实则应该是SELECT * FROM DB_User_Learn WHERE UserID LIKE '%0019%'
      

  5.   

    declare @sql varchar(8000)set @sql = 'SELECT * FROM DB_User_Learn WHERE UserID LIKE ''%'+@U+'%'''
    set @sql = @sql +  case when @UserID='' then '' else ' OR UserID IN ('+@UserID+')' endexec(@sql)
      

  6.   

     WHERE UserID LIKE '%'+@U+'%'   改成这样的后 提示 %附近有语错误