我有一个SQL查询,我试图在我的选择中包含null响应的可能性。
最终,这将最终出现在SSRS报告中。
此查询正常,但p.ReferralReason中的任何空值都将始终返回。如果@Reason的值不是'%',我希望不返回空值:
DECLARE @Reason varchar(100)
SET @Reason = 'Lost To Care'
SELECT p.Person_ID, P.Person_Name, p.ReferralReason
FROM VIEW_Patient p
WHERE
p.ReferralReason like '%' + @Reason + '%'
我想将所有原因纳入@Reason = '%'
如果@Reason设置为'%',我想包含空值,但如果将@Reason设置为其他任何内容,我不想包含空值。
这是我尝试过的,但它不起作用:
DECLARE @Reason varchar(100)
SET @Reason = '%'
SELECT p.Person_ID, P.Person_Name, p.ReferralReason
FROM VIEW_Patient p
WHERE
case
when @Reason = '%' then (p.ReferralReason like '%' + @Reason + '%' or p.ReferralReason is null)
else p.ReferralReason like '%' + @Reason + '%'
end
MS SQL Server 2008 R2。
答案 0 :(得分:1)
如果NULL
值替换为空字符串,则它们将匹配完全由%
组成的模式,但不包含%
所包围的其他字符串
SELECT p.Person_ID,
P.Person_Name,
p.ReferralReason
FROM VIEW_Patient p
WHERE ISNULL(p.ReferralReason, '') LIKE '%' + @Reason + '%'