我想用两个日期更新记录,如果没有要更新的新值,则保持现有数据不变。
这是一个示例表记录:
id last_foo last_bar
-- ---------- ----------
1 2010-05-30 2010-05-30
我正在使用的查询:
UPDATE sampledates
SET last_foo = @LastFoo,
last_bar = @LastBar
WHERE id = @ID;
If my 可为空的日期时间 LastFoo
or LastBar
为空,我想保留现有的 SQL 值不变,否则更新。
例如,假设我使用以下值更新此记录(这是 C#,但任何语言都适用):
DateTime? LastFoo = new DateTime('2010-06-04');
DateTime? LastBar = null;
我希望记录是:
id last_foo last_bar
-- ---------- ----------
1 2010-06-04 2010-05-30
我意识到如果值为空,我可以更改查询文本以省略第二列,但我想知道是否有一种方法可以按原样保留查询并指定我不更改指定的列。
Try
UPDATE sampledates
SET last_foo = COALESCE(@LastFoo,last_foo ),
last_bar = COALESCE(@LastBar,last_bar )
WHERE id = @ID;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)