我在存储过程中有一个更新语句,通常看起来像这样:
Update [TABLE_NAME]
Set XYZ=@ABC
如果变量不为null或值为-1?
,是否有一种只触发update语句的好方法类似于IF NOT EXISTS...INSERT
问题。
非常感谢你。
答案 0 :(得分:42)
答案 1 :(得分:25)
当您有许多更新时,另一种方法是使用COALESCE:
UPDATE [DATABASE].[dbo].[TABLE_NAME]
SET
[ABC] = COALESCE(@ABC, [ABC]),
[ABCD] = COALESCE(@ABCD, [ABCD])
答案 2 :(得分:0)
另一种方法是ISNULL()。
UPDATE [DATABASE].[dbo].[TABLE_NAME]
SET
[ABC] = ISNULL(@ABC, [ABC]),
[ABCD] = ISNULL(@ABCD, [ABCD])
ISNULL和COALESCE之间的区别是返回类型。 COALESCE也可以使用2个以上的参数,并使用第一个不为null的参数。即。
select COALESCE(null, null, 1, 'two') --returns 1
select COALESCE(null, null, null, 'two') --returns 'two'