【发布时间】:2014-07-05 04:57:44
【问题描述】:
我有这样的表:
项目
- ID(整数)
- 名称(varchar)
- 日期(日期时间)
- 值(整数)
我想编写只更新这些不为空的值的 SQL 命令
我想做的伪代码:
UPDATE Items
SET
IF @NewName IS NOT NULL
{
Items.Name = @NewName
}
IF @NewDate IS NOT NULL
{
Items.Date = @NewDate
}
IF @newValue IS NOT NULL
{
Items.Valie = @NewValue
}
WHERE Items.ID = @ID
可以这样写查询吗?
【问题讨论】:
-
我可能会为每一列单独查询,因为您只有 3 个。
UPDATE Items SET Name=@NewName WHERE Name=null,然后执行下一个,UPDATE Items SET Date=@NewDate WHERE Date=null。它不是一个可重用或可扩展的解决方案,但它适用于一次性场景。 -
@Adam 这有 3 次锁定的开销
标签: sql sql-server tsql sql-update