在工作中执行以下SQL:
Select * from table1 A where A.col1 not in ( select col1 from table2 B )
发现当B表中存在col1字段为空的数据时, 查询结果集是空。
在网上查询了一番,原来真的存在这个问题:
举例说明: 5 not in ('2','3','4',' ') 等价于 not (false or false or false or null)
=> not null 即 查询不出结果集来。
所以如果非要用not in :
Select * from table1 A where A.col1 not in ( select col1 from table2 B where B.col1 is not null )
具体分析可以参考:
相关推荐
Oracle SQL 中判断值为空或 Null 的方法有多种,在本文中,我们将介绍 Oracle 和 SQL Server 中的空值判断方法。 Oracle 中的空值判断 在 Oracle 中,可以使用 `NVL` 函数来判断值为空或 Null。`NVL` 函数的语法...
Oracle 中空字符串同 null,不同于 MSSQL 中真正在将空串视为一个有意义的标识,即不是一个空值。Sybase 中同样不存在长度为 0 的字符串,但是与 Oracle 不同的是,Sybase 并不将空串视作 NULL,而是视作与只包含一...
在Oracle数据库中,NULL是一个保留字,用于表示空值。 1. 空值的基本含义 - 空值(NULL)在数据库中表示未知或无意义的值,它不同于数字0、空字符串或空日期。 - 在关系模型中,空值用于满足实体完整性和参照完整...
4. **空值处理**:在查询中,可以使用`IS NULL`或`IS NOT NULL`来特指或排除空值。例如,找出所有没有佣金的员工,可以写`WHERE comm IS NULL`。 5. **NULL合并**:在UPDATE或SELECT语句中使用COALESCE函数可以将...
Oracle数据库中的空值(NULL)处理是数据库管理中常见的问题,尤其在进行复杂查询和数据分析时,理解并正确处理空值至关重要。Oracle空值并不是一个实际的值,它表示未知或者缺失的数据。以下是对Oracle空值及其解决...
在WHERE子句中使用`IS NULL`或`IS NOT NULL`通常是为了检查某列是否为空值。但这种方式在某些情况下可能不是最优选择,尤其是在列上存在索引的情况下。例如,如果想检查`status`列是否为特定值,可以考虑直接使用不...
### Oracle查询语句优化知识点详解 #### 一、概述 Oracle数据库因其强大的功能和灵活性,在企业级应用中占据着重要地位。随着业务的发展,数据库的数据量急剧增长,如何提高查询效率成为了亟需解决的问题之一。本文...
根据提供的文件信息,以下是从标题、描述、标签和部分内容中提取的关键知识点,这些知识点主要围绕Oracle数据库中的查询语句和基本操作展开。 ### Oracle 查询语句大全 #### 1. 查询表信息 - **查询所有表**: - `...
* 空值问题可以通过使用IS NULL或IS NOT NULL操作符来解决。 九、子查询的注意事项 * 子查询要包含在括号内。 * 将子查询放在比较条件的右侧。 * 除非进行Top-N分析,否则不要在子查询中使用ORDER BY子句。 * 单行...
此Oracle函数`NS_DNAF_GetPaidUpDeposit`主要功能是从指定表中查询客户的账户余额,并返回这一数值。通过使用游标和循环结构,它可以有效地处理查询结果。对于需要频繁访问数据库并执行相似查询的应用场景来说,这样...
常用的条件运算符包括关系运算符(如>、<、=等)、范围运算符BETWEEN...AND、空值判断IS NULL和IS NOT NULL,以及IN和NOT IN判断。例如,你可以查询工资低于某个值的员工,或者查找具有特定属性(如职位、姓名)的...
=`)、一般比较(如`>`, `, `>=`, `)、范围查询(`BETWEEN`)、枚举查询(`IN`,`NOT IN`)以及空值处理(`IS NULL`, `IS NOT NULL`)。例如,可以使用`WHERE`子句结合这些条件来筛选特定部门、工资范围或特定名称...
目前的需求是这样的,要求在职工表中查询名字中包含cliton的人。可以采用如下的查询SQL语句: select * from employee where last_name like '%cliton%'; 这里由于通配符(%)在搜寻词首出现,所以Oracle系统不使用...
Oracle数据库在处理NOT IN查询时,往往需要遍历整个表,这无疑增加了查询的时间复杂度。 **推荐方案**:采用NOT EXISTS或外连接结合空值判断的策略,既可确保索引的利用,又能提高查询速度。 #### 操作符(不等于...
在Oracle数据库中,使用`SELECT`语句可以指定查询结果中包含的列。例如: ```sql SELECT NAME, HIRE_DATE, TITLE, BONUS FROM teachers WHERE bonus IN (500, 600); ``` 此查询返回教师表中奖金为500或600的教师的...
例如,整型和日期时间类型通常不允许NULL,除非明确声明为允许NULL的(如MySQL的NOT NULL DEFAULT NULL)。在创建表时,要确保允许NULL的列使用了正确的数据类型。 6. NULL vs. 空字符串: 值得注意的是,NULL和空...
对于子查询中涉及空值(NULL)的问题,Oracle处理空值的方式与非空值不同,需要特别注意,可能需要使用`IS NULL`或`IS NOT NULL`这样的条件来处理空值情况。 总结来说,Oracle子查询是数据库查询中的一种强大工具,...
本文将深入探讨Oracle数据库的一些核心知识点,包括进程、线程、SQL语句中的空值处理、查询技巧以及数据库的启动与操作。 首先,理解Oracle中的进程和线程是至关重要的。在操作系统层面,进程是资源分配的基本单位...