一尘不染

如果参数不为null或为空,则进行SQL更新

sql

我搜索了一些方法来检查SQL Server参数是否不为null或为空,但是我不确定更新几列时使用此方法的最佳方法是什么:

首先,我有这段代码在不检查空值或空值的情况下进行更新:

UPDATE [Users] 
SET FirstName = @firstname, City = @city, Address = @address, ....
WHERE ID = @iduser

然后我IF在更新之前添加了一个子句,它以这种方式工作,但是我不确定这是否是最好的方法,如果我必须更新几列,那将很长。

--Check if parameter is not null or empty before updating the column
IF (@firstname IS NOT NULL AND @firstname != '')
   UPDATE [Users] 
   SET FirstName = @firstname 
   WHERE ID = @iduser

IF (@city IS NOT NULL AND @city != '')
   UPDATE [Users] 
   SET City = @city 
   WHERE ID = @iduser
   ...
   ...

如果该值为Null或Empty,则不需要更新,只需将原始值保留在数据库中即可。


阅读 364

收藏
2021-03-17

共1个答案

一尘不染

不知道如果空白,您将尝试实现什么,但是我会尝试使用IsNull()我不认为存在IsBlank(),但是写自己应该不会太难

仅使用IsNull查询看起来像…

Update [Users]
set    FirstName = IsNull(@FirstName, FirstName),
       City = IsNull(@City, City)
       ....
Where  ...

如果它们不为空,这将使用参数值更新该行,否则将其更新为自身,也就什么都没有改变。

2021-03-17