如何根据 2 个参数在更新语句中设置值?

How can you set a value in an update statement based on 2 parameters?

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

UPDATE MyTable
SET FirstName = @FirstName,
    LastName = @LastName,
    JobNumber = (IF @MyMainParameter IS NOT NULL
                     COALESCE(@JobNumber, JobNumber)
                 ELSE
                     JobNumber)
WHERE ...

显然这是行不通的,但在这个例子中,我只想在@MyMainParameter 不为空且@JobNumber 参数不为空时更新作业编号。

显然,我可以根据我的@MyMainParameter 是否为空来执行单独的更新语句,例如:

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 ...