Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL Server中更新记录,但仅使用参数中的非空值?_Sql_Sql Server_Tsql - Fatal编程技术网

如何在SQL Server中更新记录,但仅使用参数中的非空值?

如何在SQL Server中更新记录,但仅使用参数中的非空值?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个SQL Server表,其中包含列ID和a到G(ID、a、B、C、D、E、F、G) 我需要创建一个存储过程,它接受记录的ID和7个可以为NULL的参数 该存储过程应更新由传入的ID标识的记录中的列,但仅更新具有不为NULL的相应参数的列 在那个存储过程中有更多的逻辑。现在它是通过对单个记录执行7次空检查和最多7次更新来完成的。有什么方法可以在一次更新中完成吗?您可以使用coalesce(): update t a = coalesce(@a, a), b = coales

我有一个SQL Server表,其中包含列
ID
a
G
ID、a、B、C、D、E、F、G

我需要创建一个存储过程,它接受记录的ID和7个可以为NULL的参数

该存储过程应更新由传入的ID标识的记录中的列,但仅更新具有不为NULL的相应参数的列

在那个存储过程中有更多的逻辑。现在它是通过对单个记录执行7次空检查和最多7次更新来完成的。有什么方法可以在一次更新中完成吗?

您可以使用
coalesce()

update t
    a = coalesce(@a, a),
    b = coalesce(@b, b),
    . . .
where id = @id;