我有表 eRx(商店电子处方),其中有一个pharmacy
列。我正在为 pharmacy
传递两个可选参数。
我这样声明参数:
DECLARE @pharmacy varchar(50) = null,
@Pharmacy1 varchar(50) = null
并在 where
子句中使用它们
WHERE (eRx.Pharmacy LIKE '%' + @Pharmacy + '%'
OR @Pharmacy IS NULL
OR eRx.Pharmacy LIKE '%' + @Pharmacy1 + '%'
OR @Pharmacy1 IS NULL)
如果我只传递一个参数,我将获取所有记录。它没有按预期工作。
例如,如果我传递 @pharmacy = 'CVS'
,我将获得所有行。如果我传递两个参数,那么结果将按预期返回。
请帮助我
最佳答案
您想要查找符合这两个条件的记录:
- 匹配@Pharmacy时AND
- 匹配@Pharmacy1 时给出
您可以使用OR。您是说:当 @Pharmacy 匹配或 @Pharmacy 为 null 或...时选择行,因此当 @Pharmacy 为 null 时,整个条件匹配。
你想要
WHERE (eRx.Pharmacy LIKE '%' + @Pharmacy + '%' OR @Pharmacy IS NULL)
AND (eRx.Pharmacy LIKE '%' + @Pharmacy1 + '%' OR @Pharmacy1 IS NULL)
关于sql - 存储过程中一列上的两个可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68751782/