Sql 如何基于2个参数在update语句中设置值?

Sql 如何基于2个参数在update语句中设置值?,sql,tsql,stored-procedures,sql-update,Sql,Tsql,Stored Procedures,Sql Update,目前,我有一个存储过程,它有一个更新语句,其中包含大约40个更新的值。其中一些仅在输入不为null时使用COALESCE()更新。我想知道我是否也可以做一些类似的事情,但是基于另一个参数的输入以及它本身。例如: UPDATE MyTable SET FirstName = @FirstName, LastName = @LastName, JobNumber = (IF @MyMainParameter IS NOT NULL COALE

目前,我有一个存储过程,它有一个更新语句,其中包含大约40个更新的值。其中一些仅在输入不为null时使用COALESCE()更新。我想知道我是否也可以做一些类似的事情,但是基于另一个参数的输入以及它本身。例如:

UPDATE MyTable
SET FirstName = @FirstName,
    LastName = @LastName,
    JobNumber = (IF @MyMainParameter IS NOT NULL
                     COALESCE(@JobNumber, JobNumber)
                 ELSE
                     JobNumber)
WHERE ...
显然这不起作用,但在本例中,我只想在@MyMain参数不为null且@JobNumber参数不为null时更新作业编号

显然,我可以根据@MyMain参数是否为null来执行单独的update语句,例如:

IF @MyMainParameter IS NOT NULL
BEGIN
    UPDATE MyTable
    SET JobNumber = COALESCE(@JobNumber, JobNumber)
    WHERE...
END

然而,如果我只能做1条更新语句,那么做2条更新语句似乎不是最佳选择。

结果是我的大脑冻结了。很明显,我可以很容易地使用CASE-WHEN语句来实现这一点:

UPDATE MyTable
SET FirstName = @FirstName,
    LastName = @LastName,
    JobNumber = CASE WHEN @MyMainParameter IS NOT NULL THEN COALESCE(@JobNumber, JobNumber) ELSE JobNumber END
WHERE ...