Access中Switch和Choose关键字的⽤法
Access中程序流程函数有三个,Iif ,Switch 和 Choose。IIF的⽤法已经很常见了,⽹上搜⼀下⼤把打把的。这⼉主要讲后⾯的两个:Switch和Choose。
Switch关键字
Access中没有Case When的⽤法,所以对于某些筛选⽐较就显得很吃⼒。不过还好,Access中有⼀个Switch可以解决这个问题。Switch 的语法是:SWITCH( case_1, result_1[, case_2, ])。Switch的计算顺序为从左到右,将返回第⼀个为true的case对应的result。ACCESS对Switch有预编译(基本能够写进ACCESS的Sql都有预编译,ACCESS不⽀持Execute(SqlString)的⽤法),所以Switch中的条件和结果不能有逻辑错误和语法错误,否则不能执⾏。
实例:表tUser中有字段sex Text(1),⽤于存储⽤户性别,其中,如sex='m',⽤户为男性;sex='f',⽤户为⼥性;其他情况为保密。为了便于sql语句的说明,我们假设还有其他两个字段,userid和username。
在SqlServer中,如果要在搜索结果中直接显⽰性别的名称SexName(不是m/f之类的代码),使⽤Case When很⽅便。
SELECT UserID,
UserName,
UserName,
SexName = WHEN LCASE(Sex)
CASE 'm' THEN N'男'
CASE 'm' THEN N'男'
CASE 'f' THEN N'⼥'
ELSE N'保密' END
FROM tUser
ACCESS不⽀持WHEN CASE的⽤法。虽然不那么灵巧,但是⽤Switch可以解决这个问题。
switch函数用法举例
SELECT UserID,
UserName,
SWITCH(
Sex = 'f',  '男',
Sex = 'm', '⼥',
True, '保密'
) AS SexName
FROM tUser
上述中最后⼀个Case为true,该⽤法类似于When Case语法中的Else。
Choose关键字
对于Choose关键字的⽤法,暂时没有想到在它与SQLServer中的那个⽤法对应。
Choose函数的语法如下:Choose(Index,Choice_1[,])。其中,Index为从1开始的整数,Choice对应的是与Index相对应的选择项的值。
⼀时没有想到太好的例⼦,就⽤上⾯的那个关于⽤户性别的例⼦吧。假如上⾯的sex使⽤1替代m,代表男性,2替代f,代表⼥性。
SELECT UserID,
UserName,
IIF(CHOOSE(CINT(Sex),'男性','⼥性') IS NULL,
'保密',
CHOOSE(CINT(Sex),'男性','⼥性')
CHOOSE(CINT(Sex),'男性','⼥性')
) AS SexName
FROM tUser
如果你说sex还是使⽤的m/f,那么怎么⽤?,可以画蛇添⾜,使⽤Choose + Switch的嵌套啊。具体的嵌套代码我就不写了,没有什么价值,主要是在CInt(Sex)那⼉嵌套,通过Switch对不同的Sex取不同
的Index值。
实话实说,我还没有发现Choose有什么更好的意义。因为Index对应的Choice都是索引好的,就是说需要事先定义的。相对来说,这样就很不灵活了。索引项都是⼀个⼀个写的(本⽂不讨论在数据库外⽣成Sql的情况),这很⿇烦。功能上Switch可以满⾜它的所有功能,⽽且更灵活,逻辑更清晰。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。