日期:2014-05-17  浏览次数:20601 次

改个SQL 语句
exec('SELECT * FROM DB_User_Learn WHERE UserID LIKE '+@U+' OR UserID IN ('+@UserID+')')

上面这样的一句语言 我对 @U 传的值是 %0019%  @UserID 为 空字符串

运行的时候提示  0019附近有语法错误,请高手指点下要怎么改,谢谢了

------解决方案--------------------
应该是@UserID 为 空字符串时 会出异常,可以试试这样

string sql = "SELECT * FROM DB_User_Learn WHERE UserID LIKE %" + @U+ "%";
if(@UserID != "")
   sql += " or UserID IN ("+@UserID+")";

注:@U 只需要传具体值就可以了,两个百分号已放入SQL中;也可以用你之前的。。。
------解决方案--------------------
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+')' end

exec(@sql)