考虑将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_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
表。您将不需要修改查询。
啊是的!替换语句会使代码更好地根据需要进行更改,谢谢! – Gutanoth 2013-02-15 06:27:34