Oracle“不等于号”与Null的情况

今天突然才发现,Oracle中的“不等于操作符”是忽略Null的。

比如,查询comm不等于的300的记录,我会理所当然地使用where comm != 300

预想会返回包含Null的不等于300的记录(意识里认为Null也是“不等于30”的其中一种情况)。

而实际上,它只返回不为Null且不等于300的记录,见如下测试。

使用SCOTT的公共数据测试:

--All data
select * from scott.emp t;

--Not equal 300(Not contain null)
select * from scott.emp t where t.comm != 300;

--Not equal 300(Does contain null)
select * from scott.emp t where t.comm != 300 or t.comm is null;

TEST

只返回comm不为null并且不等于300的记录。

事实上,并不仅仅“不等于号”与Null的关系是如此的,其他操作符也类似,只不过“不等于号”使用场景的特殊性让我们容易发觉此特性。

其中原因在于Null,关于Null的种种情况可见以下Oracle的文档:

http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements005.htm

Oracle“不等于号”与Null的情况

时间: 2024-10-07 12:22:49

Oracle“不等于号”与Null的情况的相关文章

Oracle“不等于号”与Nulls的情况(转)

今天突然才发现,Oracle中的“不等于操作符”是忽略null的. 比如,查询comm不等于的300的记录,我会理所当然地使用where comm != 300 预想会返回包含null的不等于300的记录(意识里认为null也是“不等于30”的其中一种情况). 而实际上,它只返回不为null且不等于300的记录,见如下测试. 使用SCOTT的公共数据测试: --All data select * from scott.emp t; --Not equal 300(Not contain null

Oracle中不等于号问题

在Oracle中,不等于号有以下几种方式:<>,!=,^= 测试SQL create table test( id int, name varchar2(10), age int ) insert into test(id,name,age) values(1,'zhangsan',23); insert into test(id,name,age) values(2,'lisi',''); insert into test(id,name,age) values(3,'wangwu',nul

浅析Oracle中的不等于号

前几天碰到一个关于Oracle不等于的问题,最后搜索了一下,发现下面资料,拿来跟大家分享一下,需要的朋友可以参考下 关于Oracle中的不等于号: 在Oracle中, <> != ~= ^= 都是不等于号的意思.都可以使用. 但是奇怪是的, 我想拿出price不是180000的商品时:(price是Number类型的) SELECT id, name FROM product where price<> 180000; 执行这个语句时,priceis null 的记录不出来.也就是

Oracle中奇怪的【不等于号】

Oracle中奇怪的[不等于号] 在Oracle中,不等号有三种:<>,!=,^= 例如: select * from test where name<>'xn'.返回的结果是name不为xn,且name不空的记录.但是这与我们想要得到的结果有出入,因为我们的目的是得到name为xn的全部记录,当然这也包括name为空的记录,所以这些写SQL语句是有问题的.为了解决这个问题,我们可以采用以下两种方案: select * from test where instr(concat(na

js里面的等于号--

一个是赋值等于号,二个是对比等于号,那么三个等于号是什么用的呢 有时候会看到在判断两个对象是否相等的时候使用了三个等号(===),它和两个等号(==)有什么区别呢?简单来说就是使用“==”时,如果两边类型不同,js引擎会把它们转换成相同类型然后在进行比较,而“===”则不会进行类型转换,因此当两边不是属于同一个类型,肯定不相等.例如:  代码如下 复制代码 var a = 0, b = '0'; alert((a == b) + '--' + (a === b))此时看到的结果为“true–fa

Oracle Net Services 配置: Error: null Oracle Net Services 配置失败。退出代码是1

具体错误描述: [[email protected] ~]$ netca /silent/responseFile /usr/local/soft/oracel/netca.rsp 正在对命令行参数进行语法分析: 传递的错误命令行参数:"silent/responsefile" 传递的错误命令行参数:"usr/local/soft/oracel/netca.rsp" 完成对命令行参数进行语法分析. Oracle Net Services 配置: Error: nul

总结C#判断为变量为null的情况

class Solution { public: void merge(int A[], int m, int B[], int n) { int mi = m + n - 1; int ai = m - 1; int bi = n - 1; while (ai >= 0 && bi >= 0) { if (A[ai] >= B[bi]) { A[mi--] = A[ai--]; } else { A[mi--] = B[bi--]; } } while (ai >

Oracle EBS-SQL (PO-16):检查采购订单完成情况统计.sql

select         e.FULL_NAME                                                     采购员,         sum(plla.quantity-plla.QUANTITY_CANCELLED)  订购数量,         sum(plla.Quantity_Received)                           完成数量 ,         round(SUM(plla.Quantity_Receive

Yii2查询语句使用不等于号

Yii2 Active Record查询条件使用不等于号,需要使用到 operator format: [operator, operand1, operand2, ...] 运算符格式: [运算符, 运算对象1, 运算对象2, ...] 演示代码: $details = MovieShows::find()->where(['movie_id'=>$id]) ->andWhere(['location_id'=>$loc_id]) ->andWhere(['<>