日期:2014-05-16  浏览次数:22269 次

access如何实现多重case when的功能?

case 字段
when 1 then 'a'
when 2 then 'b'
when 3 then 'c'
...
else 'n/a'
end case

在access中的iif只能做一次这种判断:iif(字段=1,'a','b')

请问能实现这个功能吗?


------解决方案--------------------
如果是在ACCESS环境中可以直接使用 Switch 函数

引用Switch 函数



计算一列表达式,并返回列表中第一个表达式为 True 时与其关联的 Variant 值或表达式。

语法

Switch(expr-1, value-1[, expr-2, value-2 … [, expr-n,value-n]])

Switch 函数语法具有下面这些部分:

部分 说明
expr 必选。需要计算的变量表达式。
value 必选。这是当相应的表达式为 True 时将返回的值或表达式。


说明

Switch 函数参数列表包含表达式和值对。表达式将从左向右进行计算,要计算的第一个表达式为 True 时,则返回与此表达式关联的值。如果组成部分没有正确配对,则将发生运行时错误。例如,如果 expr-1 为 True,则 Switch 返回 value-1。如果 expr-1 为 False,但是 expr-2 为 True,则 Switch 返回 value-2,依此类推。

如果是下面的情况,则 Switch 将返回 Null 值:

没有一个表达式为 True。


第一个 True 表达式的相应值为 Null。
Switch 将计算所有表达式,即使它只返回其中一个。因此,应该注意副作用。例如,如果在计算任一表达式时出现了除以零的情况,将出现错误。

------解决方案--------------------
用IIF可以,注意,有嵌套限制(8重)