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

可否在SQL的Where条件中能使用IF判断吗.?
写一个存储过程,有一个@countryID参数,可能为0,当等于0的时候
在SQL语句的结尾就不需要对 CountryID进行判断.
在SQL的Where条件中能使用IF判断吗.?
大概类似
SELECT * FROM TB1
INNER JOIN TB2
ON....
WHERE  ..........

AND m.style_name LIKE '%' + @style_name + '%'  
if(@country_ID<>0)
           {
             AND AR_Country_Master.country_id=@country_ID
}        
          order by  a.Inspection_Date desc 
这种逻辑,可以实现吗?

------解决方案--------------------
给个例子你自己改,你修改@a的值就看到效果了
DECLARE @sql VARCHAR(max)
SET @sql=''
DECLARE @a INT
SET @a=0
SELECT @sql=@sql+'select * from sys.sysprocesses where spid>50 '+CASE WHEN @a>0 THEN ' and  kpid>3000' ELSE + '' END 
PRINT (@sql)