小编Gre*_*orn的帖子

IF NOT NULL 然后 UPDATE 否则保留该字段的值

我想我在某种程度上接近让它工作,但由于某种原因我仍然会出错。

我有以下更新查询:

UPDATE DeviceAttribute
SET Details = CASE Name
          WHEN 'Accessories' THEN @Accessories
          WHEN 'Description' THEN @Description
          WHEN 'Specification' THEN @Specification
          ELSE Details
END
WHERE DeviceID = 10
Run Code Online (Sandbox Code Playgroud)

参数由不同的用户填写。我现在面临的问题是,即使您想更新单个字段,您仍然必须使用旧数据填写其他参数。因此,我想设置选项 IF @parameter IS NULL THEN THEN 保留已存储在数据库中的值。我试图找到一些解决方案,类似以下查询的内容似乎是解决方案,但我无法让它工作:

UPDATE DeviceAttribute
SET Details = CASE Name
          WHEN 'Accessories' IS NOT NULL THEN @Accessories
          WHEN 'Description' IS NOT NULL THEN @Description
          WHEN 'Specification' IS NOT NULL THEN @Specification
          ELSE Details
END
WHERE DeviceID = 10
Run Code Online (Sandbox Code Playgroud)

数据库存储在 SQL Server 2008 中

在此先感谢您的帮助。

编辑以澄清:

原来的表是这样的

DeviceID|Name …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server-2008 sql-server

10
推荐指数
1
解决办法
10万
查看次数