当前位置: 首页 > 面试题库 >

空值-布尔表达式

郏稳
2023-03-14
问题内容

所以我有一个关于考试作业的问题,在这个作业中,我们有一堆布尔表达式,例如:

FALSE OR NULL = NULL

然后,我们应该编写布尔表达式的值。为此,我使用了三值逻辑,但是当您获得如下所示的布尔表达式时,这将如何应用:

(NULLL AND TRUE) OR FALSE

或者

(NULL AND NULL) OR TRUE

通过三值逻辑可以很容易地找到第一个,但是我如何找出另外两个。

我知道这是一个非常基本的问题,但是我对此仍然是陌生的。

提前致谢


问题答案:

您需要布尔值AND和的三相真值表OR

OPERAND1  OPERATOR  OPERAND2  RESULT
------------------------------------
TRUE      AND       TRUE      TRUE
TRUE      AND       FALSE     FALSE
FALSE     AND       FALSE     FALSE
TRUE      AND       NULL      UNKNOWN
FALSE     AND       NULL      FALSE
NULL      AND       NULL      UNKNOWN
TRUE      OR        TRUE      TRUE
TRUE      OR        FALSE     TRUE
FALSE     OR        FALSE     FALSE
TRUE      OR        NULL      TRUE
FALSE     OR        NULL      UNKNOWN
NULL      OR        NULL      UNKNOWN

该表是缩写,依赖于布尔逻辑中AND和的交换性质OR。在大多数SQL变体中,UNKNOWN并且NULL是等效的。用简单的英语来说,如果即使使用部分信息也可以知道该值,则将提供该值。例如X OR Y始终是 真实的 ,如果X是真的,Y是否是已知的,不管它需要的价值。同样的,X AND Y始终是 假的
,如果X是假的,Y是否是已知的,不管它需要的价值。这些是布尔运算符的引理,在介绍性集合论等课程中都有讲授。

一旦有了这些真值表,就可以对表达式进行求值,并在不存在括号的情况下遵循SQL运算符的正确优先级顺序。

这是您的示例之一的评估链:

  • (NULL AND TRUE) OR FALSE
  • (NULL) OR FALSE
  • NULL OR FALSE
  • NULL

有关更多信息,请参见Wikipedia的三值逻辑条目:SQL中的应用程序

最后一点:NULL永远不等于NULL,因为您不知道两个未知值是否彼此相等。



 类似资料:
  • 问题内容: 这可能只是白痴,但对我来说有点混乱: 为什么在返回时返回? 问题答案: 您正在根据布尔值的文字值检查它。一样不会是真的。 如果将其投射,您将看到区别: 究其原因是真实的,因为你是比较相同的对象。与或相同。 当您看到类似的东西并且此检查从未通过时,困难就来了。那是因为您正在检查项目的 真实值 。按照惯例,所有这些项目都将通过布尔检查失败- 也就是说,它们的布尔值将为: (明显) 任何空序

  • 本文向大家介绍OCaml 布尔表达式的求值,包括了OCaml 布尔表达式的求值的使用技巧和注意事项,需要的朋友参考一下 示例 我们定义布尔表达式的类型,其原子由字符串标识为 并可以通过oracle : string -> bool给出原子的值来评估这些表达式,如下所示: 了解该功能如何清晰易读。由于正确使用了模式匹配,因此读取此功能的程序员只需很少的时间即可确保其正确实现。

  • 我正在寻找一种相对简单的(与编写解析器相比)方法来计算Java中的布尔表达式,我不想使用JEP库。 我有一个字符串表达式,如:

  • 我知道我可以测试列表是否为空,如下所示: 但我不明白为什么下一个代码不是等效的:

  • 我正在对科特林进行修补,我正试图让我的头脑了解科特林中可为空的变量是如何工作的。这里我有一段代码,它执行布尔检查,以查看车辆是否超载。实现是处理可空变量的好方法还是有更优雅的方法? 非常谢谢!

  • 我开始学习布尔表达式。我正试图找出以下问题: 假设age1、age2和age3是int变量,假设答案是布尔变量。编写一个表达式,当age1小于或等于age2并且age2小于或等于age3时,该表达式将答案指定为true。否则答案应为false。 我已经尝试了一些东西,但对Java来说还是比较陌生的。我能把答案打印出来,但我的数字还是有问题。 这是错误的: 我只是不知道如何解决这个问题,或者代码中到