浅析Oracle中的不等于号

前几天碰到一个关于Oracle不等于的问题,最后搜索了一下,发现下面资料,拿来跟大家分享一下,需要的朋友可以参考下

关于Oracle中的不等于号:
在Oracle中,
<>
!=
~=
^=
都是不等于号的意思。都可以使用。
但是奇怪是的, 我想拿出price不是180000的商品时:(price是Number类型的)
SELECT id, name FROM product where price<> 180000;
执行这个语句时,priceis null 的记录不出来。也就是拿不到price是null的商品。必须使用:
SELECT id, name FROM product where price<> 180000 or price is null;才行。
字符串的字段存在同样的问题。
记住:null只能通过is null或者is not null来判断,其它操作符与null操作都是false。
==============================================================
测试:select * from test where name<>‘xn‘。只能查出name非空的记录。去掉name<>‘xn‘就可以了。这种写法有问题。
然后用了instr(name,‘xn‘)=0 来判断,如果name非空的话,判断还是有效的。如果name为空,这个判断又出问题了。不得已只得采取instr(concat(name,‘xx‘),‘xn‘) = 0来判断,因为就算name为空,当和‘xx‘连接后,也会不为空的。
所以最后的sql语句为:
select * from test where instr(concat(name,‘xx‘),‘xn‘) = 0 来查询name字段不等于‘xn‘的记录。
或者可以用 select * from test where nvl(name,‘xx‘)<>‘xn‘ 来查询name字段不等于‘xn‘的记录。

时间: 2024-10-14 00:40:10

浅析Oracle中的不等于号的相关文章

C#中Equals和= =(等于号)的比较)(转载)

C#中Equals和= =(等于号)的比较) 相信很多人都搞不清Equals和 = =的区别,只是零星的懂一点,现在就让我带大家来进行一些剖析 一.           值类型的比较 对于值类型来说  两者比较的都是"内容"是否相同,即 值 是否一样,很显然此时两者是划等号的. 例: int i = 9; int j = 9; Console.WriteLine("Equals和= =(等于号)的比较"); Console.WriteLine("i.Equ

C#中Equals和= =(等于号)的比较)

C#中Equals和= =(等于号)的比较) 相信很多人都搞不清Equals和 = =的区别,只是零星的懂一点,现在就让我带大家来进行一些剖析 一.           值类型的比较 对于值类型来说  两者比较的都是”内容”是否相同,即 值 是否一样,很显然此时两者是划等号的. 例: int i = 9; int j = 9; Console.WriteLine("Equals和= =(等于号)的比较"); Console.WriteLine("i.Equals(j) :&q

【Oracle】浅析Oracle中的事务

1. 什么是事务 在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么都成功执行,完成整个工作单元操作,要么一个也不执行. 如:网上转帐就是典型的要用事务来处理,用以保证数据的一致性. 2. 事务特性 SQL92标准定义了数据库事务的四个特点: 原子性(Atomicity):一个事务里面所有包含的SQL语句是一个执行整体,不可分割,要么都做,要么都不做. 一致性(Consistency):事务开始时,数据库中的数

Oracle 浅析Oracle中的事务

1. 什么是事务 在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么都成功执行,完成整个工作单元操作,要么一个也不执行. 如:网上转帐就是典型的要用事务来处理,用以保证数据的一致性. 2. 事务特性 SQL92标准定义了数据库事务的四个特点: 原子性(Atomicity):一个事务里面所有包含的SQL语句是一个执行整体,不可分割,要么都做,要么都不做. 一致性(Consistency):事务开始时,数据库中的数

Javascript中两个等于号和三个等于号的区别(==/===)

==//表示值的比较 ===//表示对象类型的比较 1.对于string,number等基础类型,==和===是有区别的. a)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等. b)同类型比较,直接进行“值”比较,两者结果一样. alert('1'==1);//结果是true alert('1'===1);//结果是false 2.对于Array,Object等高级类型,==和===是没有区别的. 进行“指针地址”比较. 3.基础类型与高级

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“不等于号”与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“不等于号”与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

Oracle中奇怪的【不等于号】

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