首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

改个SQL 话语

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

改个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)

热点排行