考虑使用Switch()
替代嵌套的IIf()
表达式。
对于DB_Total
中的这些数据...
id Type
1 BOOL
2 abc
3 <
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_Total
做出与 Switch()
版本相同的更改。
UPDATE DB_Total AS d
INNER JOIN replacements AS r
ON d.Type = r.old_type
SET d.Type = [r].[new_type];
将来,如果您需要更改或添加/删除单词替换对,您只需要编辑replacements
表。然后您就不需要修改查询。