带有值或Null的SQL过滤条件

时间:2014-06-08 17:36:48

标签: sql sql-server database sql-server-2012

在下面的过程中,我可能只传递@Type值,否则它将为NULL。

如何在传递NULL时处理所有数据,并在传递类型时处理特定记录。我不想为这个简单的处理构建动态查询。

CREATE PROCEDURE [dbo].[GetPatientImages]  
(      
@TenantId BIGINT,       
@PatientId BIGINT,
@Type NVARCHAR(100)        
)      

AS       

BEGIN       
     SET NOCOUNT ON         
IF @TenantId IS NULL       
      RAISERROR('The value for @TenantID should not be null', 15, 1) -- with log      

ELSE      
BEGIN      

SELECT  

P.[DisplayFileName],  
P.[StoredFileName],
P.[Location],
P.[Type],
P.[Description]

FROM  

 PatientImage P

 WHERE P.PatientId=@PatientId AND P.TenantId=@TenantId AND P.[Type]=@Type
 ORDER BY P.[Type] DESC
END  
END

1 个答案:

答案 0 :(得分:3)

试试这个:

WHERE P.PatientId=@PatientId AND P.TenantId=@TenantId AND
      (@Type is null or P.[Type]=@Type)