当前位置: 首页 > 知识库问答 >
问题:

从NULL为NULL的员工中选择*;从员工中选择*,其中NULL=NULL;

毋宏茂
2023-03-14

我最近开始学习oracle和SQL。在学习过程中,我遇到了几个问题,我的朋友在一次采访中被问到。

SELECT * 
FROM Employees  
WHERE NULL IS NULL;

此查询生成Employees表中的所有行。至于我所理解的Oracle在列中搜索数据,那么,NULL,这里是作为列名处理的吗?我说Oracle在列中搜索数据是正确的吗?Oracle怎么会给出这个查询中的所有行呢?在WHERE子句中,条件的左手边不一定是列名吗?它不应该抛出一个错误吗?

SELECT * 
FROM Employees 
WHERE NULL = NULL; 

不给出选定的行。

我知道我不能使用除了IS NULL和IS not NULL之外的运算符来比较NULL值。但为什么它会产生一个结果而不是一个错误。谁能给我解释一下。Oracle是否将NULL视为列和空单元格?

共有1个答案

姬浩渺
2023-03-14

where子句由条件表达式组成。条件表达式不要求两边都包含列名。事实上,虽然通常一侧或两侧都是列,但包含以下内容的表达方式并不少见:

  • 子查询
  • 参数
  • 常量
  • 标量函数

一个常见的例子是:

WHERE 1 = 1 AND . . .

从概念上讲,where子句的工作方式是,为from生成的每一行计算该子句。如果子句的计算结果为true,则该行将保留在结果集中(或用于进一步处理)。如果为falsenull,则将筛选出该行。

因此,null IS null计算结果为TRUE,因此保留所有行。NULL=NULL计算结果为NULL,因此不保留行。

 类似资料:
  • 问题内容: 这是我的(PostgreSQL)表- 我想选择所有 不 知道要结婚的人,即包括那些拥有NULL wedding_status的人。 这并 不能 正常工作- 当然可以- 问题是我正在使用-从SQLAlchemy访问它 转换为- 而且也 没有 工作- 也不- 如何通过SQLAlchemy选择NULL值? 问题答案: (由指示@augurar)):因为 SQLAlchemy的 使用 魔术方法

  • 问题内容: 我希望下面的代码向我显示表中交换列为null但结果集显示0行的所有记录。知道为什么吗? 问题答案: 也许您将其解释为不相同,但请尝试此操作 但如果仍然无法获得价值,也许它上面有空格,那么您应该这样做,

  • 我有一个工作数据表,可以列出餐馆的对象。我想删除/编辑选定的,但当我选择一个以下异常显示: 这是桌子: 现在所有ID都显示在表中,但在选择时会显示异常。我试着按照这个例子做每件事。但它们甚至没有rowKey属性。 如果相关的话,这是豆子。 } Primefaces:5.3 JSF:2.2

  • 问题内容: 我看到一些示例使用带null的select语句。何时使用: 问题答案: Select null通常与EXISTS结合使用。 例如:- 如果选择查询中有记录,则它将“存在”状态设置为true。

  • 问题内容: 我正在使用CodeIgniter的Active Record类来查询MySQL数据库。我需要选择表中没有将字段设置为NULL的行: 那只会返回以下查询: 该字段是一个字段。 有没有更好的方法来解决这个问题?我知道我可以自己编写查询,但是我不想在整个代码中都使用Active Record。 问题答案:

  • /***此方法将获取选择后的所有合同。*/@RequestMapping(值={“/ReportDetailed01”},方法=RequestMethod.Post)//public ModelAndView getContractsForReports01(@ModelAttribute(值=“Reports01”)ReportForm01,BindingResult BindingResult