我有一个没有大量列的数据库表。我想编写一个 T-SQL 存储过程,它将更新该表中的记录,并且我想使用该过程来更新所有或仅特定列,这样如果为任何列值传递 NULL,而不是现有值不应该被改变。目前我可以使用这样的解决方案
UPDATE table
SET column1 = COALESCE(@param1, column1),
column2 = COALESCE(@param2, column2),
...
WHERE id = @id
或者
UPDATE table
set column1 = isnull(@param1,column1),
column2 = isnull(@param2,column2)
它们都运作良好,我唯一的问题是有时我想在任何列中显式保存 null 而我无法使用上述解决方案来做到这一点。谁能告诉我我该怎么办?