如何更新T-SQL记录并忽略NULL上的参数的UPDATE

fer*_*vak 4 t-sql stored-procedures

有没有办法用以下参数创建UPDATE stored_procedure:

@param1 int = null,
@param2 int = null,
@param3 nvarchar(255) = null,
@param4 bit = null,
@id int
Run Code Online (Sandbox Code Playgroud)

并使用UPDATE语句,它将仅更新非NULL的字段

所以,如果我执行

spUpdateProcedure @param1=255, @id=1
Run Code Online (Sandbox Code Playgroud)

如果将更新记录@ id = 1,但它只会改变字段@ param1并忽略对其他@param2,3,4的更改.

换句话说,它不会改变null@ param2,3,4中的值

谢谢.

Joe*_*lli 5

UPDATE YourTable
    SET Column1 = COALESCE(@param1, Column1),
        Column2 = COALESCE(@param2, Column2),
        ...
    WHERE id = @id
Run Code Online (Sandbox Code Playgroud)