Sql 我是否可以检查更新';准备好了吗?

Sql 我是否可以检查更新';准备好了吗?,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我有一个存储过程,它使用一个简单的更新,并将一些变量传递给它。但我不想在这些字段的变量不为null时更新它们。这基本上就是我的陈述 UPDATE myTable SET myColumn = @myColumn, mColumn1 = @myColumn1 WHERE myColumn2 = @myColumn2 是否在集合中应用了一些条件逻辑?我有大约10个字段需要检查,所以我不想对每个字段进行更新或诸如此类的操作 有什么想法吗?为空(默认值为空时为变量) 尝试使用以下功能 UPDA

我有一个存储过程,它使用一个简单的更新,并将一些变量传递给它。但我不想在这些字段的变量不为null时更新它们。这基本上就是我的陈述

UPDATE myTable
SET myColumn = @myColumn,
    mColumn1 = @myColumn1
WHERE myColumn2 = @myColumn2
是否在集合中应用了一些条件逻辑?我有大约10个字段需要检查,所以我不想对每个字段进行更新或诸如此类的操作

有什么想法吗?

为空(默认值为空时为变量)

尝试使用以下功能

UPDATE myTable
SET myColumn = coalesce(myColumn,@myColumn),
    mColumn1 = coalesce(mColumn1,@myColumn1)
WHERE myColumn2 = @myColumn2
以上代码仅在列为null时更新列。如果它们不为空,代码将设置存储在列中的相同值。

是您的朋友。它返回其第一个非空参数。事实上,从你的叙述中,我不确定你想要的东西是哪种方式,或者:

UPDATE myTable
SET myColumn = COALESCE(myColumn,@myColumn),
    mColumn1 = COALESCE(myColumn1,@myColumn1)
WHERE myColumn2 = @myColumn2
如果列不为null,则保留当前列的值,或者

UPDATE myTable
SET myColumn = COALESCE(@myColumn,myColumn),
    mColumn1 = COALESCE(@myColumn1,myColumn1)
WHERE myColumn2 = @myColumn2

如果变量为空,则保留当前列的值。

是,您可以使用
大小写。。。结束
表达式。