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

时间:2011-05-31 19:03:41

标签: tsql stored-procedures

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

@param1 int = null,
@param2 int = null,
@param3 nvarchar(255) = null,
@param4 bit = null,
@id int

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

所以,如果我执行

spUpdateProcedure @param1=255, @id=1

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

换句话说,它不会改变@ param2,3,4

null的值

感谢。

2 个答案:

答案 0 :(得分:5)

UPDATE YourTable
    SET Column1 = COALESCE(@param1, Column1),
        Column2 = COALESCE(@param2, Column2),
        ...
    WHERE id = @id

答案 1 :(得分:0)

编辑语句

,你可以这样做

update table
set
column1 = isnull(@param1,column1),
column2  isnull(@param2,column2)