【发布时间】:2017-02-27 19:59:56
【问题描述】:
ALTER PROCEDURE MyProcName
@IsMatch varchar(50)
AS
SELECT
IMS_PolicyNumber, Rater_PolicyNumber
FROM
tblPolicies
WHERE
(@IsMatch = 'No Match' AND Rater_PolicyNumber <> IMS_PolicyNumber OR Rater_PolicyNumber IS NULL) -- returns No Match records
OR (@IsMatch = 'Match' AND Rater_PolicyNumber = IMS_PolicyNumber) --Returns Matching Records
OR (@IsMatch = 'Both') --Returns both: matching and no matching records
但现在我想添加通配符参数@Rater_PolicyNumber,这样用户就可以只输入Rater_PolicyNumber 的第一个字母并过滤结果,或者如果用户将其留空,则忽略此参数:
AND @Rater_PolicyNumber LIKE COALESCE('%'+ @Rater_PolicyNumber+'%','')
但我很难让它与@IsMatch 参数一起工作:
如果我在@Rater_PolicyNumber 中传递值,则以下内容有效,但如果我将其留空 - 它会返回所有记录,而不仅仅是不匹配的记录。
WHERE
((@IsMatch = 'No Match' AND Rater_PolicyNumber <> IMS_PolicyNumber OR Rater_PolicyNumber is null)
OR Rater_PolicyNumber LIKE COALESCE('%'+ @Rater_PolicyNumber+'%',''))
我如何返回“不匹配”、“匹配”和“两者”记录,并仅在用户输入时才按@Rater_PolicyNumber 值过滤它们。
谢谢
【问题讨论】:
标签: sql-server reporting-services wildcard