繁体   English   中英

传递任何一个参数时的SQL Server语法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM