SQL查询如果不为空,则更新或保持相同的数据

Sel*_*jan 2 sql sql-server stored-procedures sql-update

我有一个大约有 17 个字段的表。我需要在这个表中执行频繁的更新。但问题是每次我可能只更新几个字段。在这种情况下编写更新查询的最佳方法是什么?我正在寻找一个选项,其中仅当值不为空时才更新该值。

例如,我在数据库 Say A、B、C、D 中有四个字段。用户更新 say D 的值。所有其他值保持不变。所以我想要一个更新查询,它只更新 D 的值,保持其他值不变。因此,如果我将 a、b 和 c 设置为 null,将 d 设置为用户提供的值,我想编写一个更新查询,该查询仅将 d 的值更新为 a、b 和 c 为空。MsSQL 2012 是我的数据库

Vig*_*r A 5

可能是这样的

Update T
SET A = CASE WHEN A IS NOT NULL THEN 'Value' ELSE A END,
    B = CASE WHEN B IS NOT NULL THEN 'Value' ELSE B END,
    C = CASE WHEN C IS NOT NULL THEN 'Value' ELSE C END
    D = CASE WHEN D IS NOT NULL THEN 'Value' ELSE D END
FROM Table1 T
Run Code Online (Sandbox Code Playgroud)