考虑Switch()作为嵌套IIf()表达式的替代方案。
有了这些数据DB_Total...
id Type
1 BOOL
2 abc
3 <-- Type is Null
4 WORD
5 DINT
...此查询更新DB_Total如下所示...
UPDATE DB_Total
SET [Type] = Switch(
[Type]='BOOL','DIGITAL',
[Type]='WORD','UINT',
[Type]='DINT','LONG'
)
WHERE [Type] IN ('BOOL', 'WORD', 'DINT');
DB_Total后:
id Type
1 DIGITAL
2 abc
3
4 UINT
5 LONG
但是,您可能会发现另一种方法更方便。创建replacements表:
id old_type new_type
1 BOOL DIGITAL
2 WORD UINT
3 DINT LONG
然后此语句将产生与版本UPDATE相同的更改。DB_TotalSwitch()
UPDATE DB_Total AS d
INNER JOIN replacements AS r
ON d.Type = r.old_type
SET d.Type = [r].[new_type];
将来,如果您需要更改或添加/删除成对的单词替换,您只需要编辑replacements表格。这样您就不需要修改查询了。