В SQLServer аккуратным способом является использование ISNULL (@ param1, price1) .
Принимает @ param1 и проверяет, имеет ли он значение NULL. Если он равен NULL, он заменяется значением из цены1. Мне нравится ISNULL , так как он очень удобочитаемый, делает то, что говорит на банке.
Это не ANSI SQL, хотя там существует более гибкая команда: COALESCE . Это как ISNULL , но принимает любое количество параметров. Он просматривает их, чтобы найти первое ненулевое значение. Если ничего не найдено, возвращается 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 против ISNULL "