在SQLServer中的整洁的方法是使用ISNULL(@param1, price1)。
这需要@param1并检查它是否为NULL。如果它是NULL,则用来自price1的值替换。我喜欢ISNULL,因为它的可读性非常好,它在锡纸上说的是什么。
尽管这不是ANSI SQL,但存在一个更灵活的命令:COALESCE。它就像ISNULL,但可以使用任意数量的参数。它将搜索它们以获取第一个非NULL值。如果没有找到,返回NULL ...
UPDATE sometable
SET
price1 = ISNULL(@param1, price1),
price2 = ISNULL(@param2, price2),
price3 = ISNULL(@param3, price3),
price4 = ISNULL(@param4, price4)
WHERE
ID = @param5
UPDATE sometable
SET
price1 = COALESCE(@param1, price1),
price2 = COALESCE(@param2, price2),
price3 = COALESCE(@param3, price3),
price4 = COALESCE(@param4, price4)
WHERE
ID = @param5
另见: “COALESCE vs ISNULL”