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

``in''子句在oracle中如何工作

柳英资
2023-03-14
问题内容
select 'true' from dual where 1 not in (null,1);

当我们执行此操作时,将不会有任何结果

我的问题是:

以上查询在逻辑上等效于

select 'true' from dual where 1 != null and 1 != 1;

就像上面的声明一样,不会有任何结果

请说清楚?


问题答案:

正确(但请注意,这IN是一个运算符,而不是一个子句,它通常在SQL中这样工作,不仅适用于Oracle)。

where 1 not in (null,1)

等效于:

where 1 != null and 1 != 1

实际应该写成:

WHERE 1 NOT IN (NULL, 1)

WHERE 1 <> NULL AND 1 <> 1

与以下内容相同:

WHERE (1 <> NULL) AND (1 <> 1)

结果为:

WHERE UNKNOWN AND FALSE

并进一步作为:

WHERE FALSE

因此,它正确不返回任何行。

请注意,如果您有WHERE 1 NOT IN (NULL, 2),它将评估为WHERE UNKNOWN(在练习中保留),并且也不会返回任何行。



 类似资料:
  • 主要内容:Oracle IN操作符介绍,Oracle IN运算符示例,以下是纠正/补充内容:在本教程中将学习如何使用Oracle 运算符来确定值是否与列表或子查询中的任何值相匹配。 Oracle IN操作符介绍 Oracle 运算符确定值是否匹配列表或子查询中的任何值。 注:子查询是嵌套在另一个查询中的查询,可通过在子查询教程中了解子查询用法。 确定表达式是否与值列表匹配的Oracle 运算符的语法如下所示: 并且表达式的语法与子查询匹配: 参数 在上面语法中,这里将介绍每个参数含义:

  • 问题内容: 我将String数组(plcListchar)传递给存储过程,我想在IN()子句中使用此String数组。 我不能直接在IN()子句中使用plcListchar。让我展示一下我如何在JAVA中创建plcListchar字符串数组。 用于创建CHAR_ARRAY, 我想在IN子句中使用plcListchar。以下是我的存储过程。 您能建议我如何使用吗,如果您想提出任何其他逻辑,那太好了。

  • 问题内容: 我知道这个问题已经发布了很多次,但是我想询问详细信息, 使用Oracle,您不能向IN子句传递1000个以上的参数,因此,将hibernate与oracle结合使用可以解决此问题,例如: 1-对于每个1000个参数列表,在IN子句之间使用OR子句,但这不适用,因为oracle的另一个限制是整个查询参数不超过2000 2-使用for循环,每次以1000个参数列表的形式运行查询,然后附加所

  • 问题内容: 嗨, 我有一个变量$ 1,其中包含逗号分隔的电子邮件地址,例如john @ example.com,pat @ example.com。我希望在类似where的子句中传递此变量 但是显然这行不通,我尝试了APEX_UTIL.STRING_TO_TABLE和DBMS_UTILITY.COMMA_TO_TABLE但徒劳。 任何帮助表示赞赏。 问题答案: 正如Pavanred所暗示的那样,最

  • 问题内容: 我到处都在寻找解释,以了解选择语句中的子查询如何工作,但由于解释非常模糊,我仍然无法理解该概念。 我想知道您如何在oracle的select语句中使用子查询以及它的确切输出。 例如,如果我有一个查询,希望显示这些表中员工的姓名及其管理的个人资料数量 员工(EmpName,EmpId) Profile(ProfileId,…,EmpId) 如何使用子查询? 我当时想在select语句中需

  • 问题内容: 这个问题已经在这里有了答案 : SQL IN子句1000项目限制 (4个答案) 6年前关闭。 我有一条SQL语句,我想在其中使用子句来获取1200的数据。当我在IN子句中包含1000个以上时,Oracle表示不允许这样做。为了克服这个问题,我尝试如下更改SQL代码: 该代码已成功执行,但结果很奇怪(在所有期间都获取了计算结果,而不仅仅是200912,这不是我想要的)。是否应该使用bet