在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」