[英]Syntax for SQL Server when either of parameter is passed
如果传递了一个参数/或两个参数都传递了,如何将其与WHERE子句中的单列匹配。
如果两者都通过,则应与第一个一起获得结果集,第二个则获得结果集。
例如:
--either will be passed
declare @processStepID int = null
declare @PROCESS_StepID int = null
if(@processStepID is null)
select * from CTL.CTRL.CTRL_PROCESS_STEP_ACTIVITIES
where PROCESS_STEP_ID = @PROCESS_StepID
else
select * from CTL.CTRL.CTRL_PROCESS_STEP_ACTIVITIES
where PROCESS_STEP_ID = @processStepID
如何在不使用if语句的where子句中编写此代码。
谢谢
WHERE PROCESS_STEP_ID = coalesce( @processStepID, @PROCESS_StepID )
使用ISNULL函数
SELECT *
FROM CTL.CTRL.CTRL_PROCESS_STEP_ACTIVITIES
WHERE PROCESS_STEP_ID = ISNULL( @processStepID, @PROCESS_StepID )
select * from CTL.CTRL.CTRL_PROCESS_STEP_ACTIVITIES
where (PROCESS_STEP_ID = @PROCESS_StepID) OR (PROCESS_STEP_ID = @processStepID)
似乎太明显了。 我想念什么?
select *
from CTL.CTRL.CTRL_PROCESS_STEP_ACTIVITIES
where PROCESS_STEP_ID = ISNULL(@PROCESS_StepID,@processStepID)
这应该做您想要的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.