Sql UPDATE语句,用特定值更新任何字段

Sql UPDATE语句,用特定值更新任何字段,sql,ms-access,Sql,Ms Access,我刚刚学习了如何在SQL中生成update语句,我认为它可能对我遇到的另一个问题很有用 我需要将任何值为999的列设置为星号。我有一个access数据库,由测功机自动填充。有几个字段可能具有如此高的值(114以上) 从我收集的信息中,我可以明确地说明每个势场,然后是where标准: SET field1 = "*", field2 = "*", .. field114 = "*" WHERE field1 = 999.. etc 是否有一种简单的方式来说明所有字段?不应该有一个测试,其中999

我刚刚学习了如何在SQL中生成update语句,我认为它可能对我遇到的另一个问题很有用

我需要将任何值为999的列设置为星号。我有一个access数据库,由测功机自动填充。有几个字段可能具有如此高的值(114以上)

从我收集的信息中,我可以明确地说明每个势场,然后是where标准:

SET field1 = "*", field2 = "*", .. field114 = "*" WHERE field1 = 999.. etc

是否有一种简单的方式来说明所有字段?不应该有一个测试,其中999是一个结果,它不是一个可以忽略的错误。

平等地处理许多字段是一个非规范化数据库设计的明确指标,因为有114个字段。这可能是您的潜在问题,修复它将使更新操作更加容易

在更新查询中,需要指定每个字段。您可以使用以下结构来更新999到*的字段,但这有点不好,因为即使没有字段的值为999,它也会涉及行

UPDATE MyTable
SET
Field1 = IIF(Field1 = "999", "*", Field1),
Field2 = IIF(Field2 = "999", "*", Field2),
etc

我认为sql是首选,因为我目前在vba中大量使用sql,但如果有特定于Access的解决方案,我并不反对。我试图避免使用DAO,因为我认为这需要循环,而且可能需要循环数千条记录(大约有500个字段可能需要循环)。使用null而不是*.jarlh我不确定null是否有效。我们使用一个不同的程序,专门使用星号来忽略值,谢天谢地,如果值为空,程序将转换为星号。谢天谢地,因为我很确定星号是字符串,但这些字段是双精度的。:)这是一种后遗症,但每一个领域的工作。尽管查看了查询中的几乎每个值,但没有明显的延迟。