前言
敲机房的路上遇到了一个问题,就是在组合查询中的逻辑关系是按照一个什么样的顺序来运行的?难道是按照自己敲得那个顺序吗?比如说三行一起查的时候,难道是按照第一行,第二行,第三行这样的顺序吗?然后看我的解决程序
VB中的逻辑关系
先来说一下这些逻辑关系中的顺序,逻辑运算符也像数学中的加减乘除一样,总是要有一个先后顺序的
Not
And
Or
Xor
Eqv
Imp
举个栗子:
这个查询语句就是先进行“与”关系,再进行“或”关系,所以才会有这样的查询结果
NOT
逻辑非,用符号表示为“!”
not在逻辑运算符中的优先级是最高的,所以看下面的栗子
Dim b as Boolean = False And Not True
先进行not true返回false,然后原语句就相当于false and false,所以最终的结果b是false
AND
逻辑与,释义是相当于生活中说的“并且”。&& 称为逻辑与,只有两个操作数都是true,结果才是true。 && 称为简洁与或者短路与,也是只有两个操作数都是true,结果才是true。
OR
逻辑或,用符号表示为“||”
如果有任一个运算符为true,则运算为true,否则为false
Xor
异或,英文为exclusive OR,或缩写成xor 符号表示为:⊕
口诀:相同取0,相异取1
事实上,XOR 在英文里面的定义为either one (is one), but not both, 也即只有一个为真(1)时,取真(1)。
true xor true = false
true xor false =true
false xor true =true
false xor false =false
Eqv
eqv意思为等效采用, eqv 和 xor是相反的
eqv中
true eqv true = true
true eqv false =false
false eqv true =false
false eqv false =true
即如果两个变量的逻辑值相同,为true,不同则为false
Imp
蕴含 Imp
result=expression1 Imp expression2
True True True
True False False
False True True
False False True
只有当第一个表达式expression1为True,第二个表达式expreesion2为False时,结果才为False,其他情况下结果均为True。
如果……,那么……”(if…then…),用符号→表示。设p,q表示两命题
如果用p表示“我有车”,q表示“我去接你”,那么p→q表示命题“如果我有车,那么我去接你”。当我有车时,若我去接了你,这时诺言p→q真;若我没去接你,则诺言p→q假。当我没有车时,我无论去或不去接你均未食言,此时认定p→q为真是适当的。
小记
当我明白了这些之后再拿自己的组合查询的内容去实践的时候,就觉得逻辑感很强,不然其中的有些内容还是不容易理解的,这样明白了之后还是懂了很多,也明白了其中的内涵,让自己更加明白,看来以后钻牛角尖还是挺重要的,不将就是发现的源动力,加油!