Sql 访问查询中的IIf和OR
我正在分析一个旧的access查询,其中我在Sql 访问查询中的IIf和OR,sql,database,ms-access,Sql,Database,Ms Access,我正在分析一个旧的access查询,其中我在中得到了一个表达式,该表达式将子句作为 (((IIf([Student_id] Like 'I*','IA',IIf([Student_id] Like 'D*','IA',[Student_id]))) Like 'R*' Or (IIf([Student_id] Like 'I*','IA',IIf([Student_id] Like 'D*','IA',[Student_id]))) Like 'N*' Or (IIf([Student_id]
中得到了一个表达式,该表达式将
子句作为
(((IIf([Student_id] Like 'I*','IA',IIf([Student_id] Like 'D*','IA',[Student_id]))) Like 'R*'
Or (IIf([Student_id] Like 'I*','IA',IIf([Student_id] Like 'D*','IA',[Student_id]))) Like 'N*'
Or (IIf([Student_id] Like 'I*','IA',IIf([Student_id] Like 'D*','IA',[Student_id])))=" "))
在上面的查询中,我想知道
IIf([Student_-id]Like'I*,'IA'
是什么意思,以及这三个(IIf([Student_-id]Like'I*,'IA',IIf([Student_-id]Like'D*,'IA',[Student_-id])Like'R*
是什么意思。最后,IIf函数是一个if/else函数,其中:
- 第一个参数是要计算的表达式
- 第二个参数是表达式结果为true时要返回的值
- 第三个参数是当表达式的结果为false时要返回的值
IIf(expr、truepart、falsepart)
由于truepart或falsepart也可以是一个表达式,您可以嵌套对IIf的调用,这可能很强大,但阅读起来可能会很痛苦
因此,如果我们从第一位开始,缩进显示结构:
(((
IIf([Student_id]如“I*”,
“IA”,
IIf([Student_id]如“D*”,
“IA”,
[学生id]))
像'R*'
因此,如果学生id以I开头,则结果为IA,否则结果为评估,如果学生id以D开头,则结果为IA,否则结果为学生id
对表达式求值后,结果是否以R开头
相同,但进行比较以查看结果ID是否以N开头
相同,但正在比较以查看结果ID是否为“”
因此,讨厌的嵌套IIf调用是一个过滤器,用于排除以I或D开头的学生ID
从根本上说,这只是一团乱麻。IIf函数是一个if/else函数,其中:
- 第一个参数是要计算的表达式
- 第二个参数是表达式结果为true时要返回的值
- 第三个参数是当表达式的结果为false时要返回的值
IIf(expr、truepart、falsepart)
由于truepart或falsepart也可以是一个表达式,您可以嵌套对IIf的调用,这可能很强大,但阅读起来可能会很痛苦
因此,如果我们从第一位开始,缩进显示结构:
(((
IIf([Student_id]如“I*”,
“IA”,
IIf([Student_id]如“D*”,
“IA”,
[学生id]))
像'R*'
因此,如果学生id以I开头,则结果为IA,否则结果为评估,如果学生id以D开头,则结果为IA,否则结果为学生id
对表达式求值后,结果是否以R开头
相同,但进行比较以查看结果ID是否以N开头
相同,但正在比较以查看结果ID是否为“”
因此,讨厌的嵌套IIf调用是一个过滤器,用于排除以I或D开头的学生ID
基本上,这只是一个混乱。
所以讨厌的嵌套IIf调用是一个过滤器,用于排除以I或D开头的学生ID
。我理解这一行,但仍然与相混淆,如果学生ID以I开头,那么IA
。请解释一下。那么讨厌的嵌套IIf调用是一个过滤器,用于排除学生ID that以I或D开头。我理解这一行,但仍然与混淆。如果学生ID以I开头,那么IA
。请解释一下。