我认为以某种方式可以使它正常工作,但是由于某些原因,我仍然会出错。
我有以下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
参数由不同的用户填写。我现在面临的问题是,即使您要更新单个字段,也仍然必须用旧数据填写其他参数。因此,我想设置选项IF @parameter IS NULL然后保留已经存储在数据库中的值。我试图找到一些解决方案,类似以下查询的内容似乎是解决方案,但无法使其正常工作:
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
数据库存储在SQL Server 2008中
先谢谢您的帮助。
编辑以澄清:
原始表格如下所示
DeviceID|Name |Details |
10 |Accessories |earplugs |
10 |Description |protectors|
10 |Specification|BeatsByDre|
出于发布原因,我进行了查询以打开表格。因此,当执行Select查询时,返回表如下所示
DeviceID|Accessories|Description|Specification|
10 |earplugs |protectors |BeatsByDre |
我创建了一个UI,以使系统用户更新附件,说明,规格之类的不同字段。如果我使用顶部显示的查询更新所有字段,则更新有效。但是,当我将文本框保留为空时,则会出现错误,提示@parameter缺少值。因此,试图找到一种解决方案以仅更新写入内容的字段。因此,如果@parameter IS为NULL,则将原始值保留在DB中。我找到了另一个解决方案,它确实很接近我想要的解决方案,但无法使其正常工作。这是另一种解决方案:https : //stackoverflow.com/questions/9387839/mysql-if-not-null-then-display-1-else-display-0
您可以在问题中添加吗?该语句的构造方式和使用的引号可能与它有关。这
—
ypercubeᵀᴹ
'@'Accessories
对我来说没有意义。
我认为您的UI代码可能未生成有效的语句。向我们显示您拥有的代码并产生错误,而不是伪代码。
—
ypercubeᵀᴹ
我要再次感谢您的帮助。对不起,我没有经验。我设法找到了错误,而您说对了,问题出在UI级别。非常感谢你的帮助。如果有人正在寻找类似的答案,我会使用第一个解决方案
—
Greenhorn
UPDATE
UI向数据库发送什么语句?