Oracle中奇怪的【不等于号】

Oracle中奇怪的【不等于号】

在Oracle中,不等号有三种:<>,!=,^=

  例如:

  select * from test where name<>‘xn‘。返回的结果是name不为xn,且name不空的记录。但是这与我们想要得到的结果有出入,因为我们的目的是得到name为xn的全部记录,当然这也包括name为空的记录,所以这些写SQL语句是有问题的。为了解决这个问题,我们可以采用以下两种方案:

select * from test where instr(concat(name,‘xx‘),‘xn‘) = 0 ;

select * from test where nvl(name,‘xx‘)<>‘xn‘ ;

  备注:null只能通过is null或者is not null来判断,其它操作符与null操作都是false。

  各数据库中的字符串连接方法

  1)MySQL:CONCAT()

  2)Oracle:CONCAT(),||

  3)SQL Server: +

例如:

SELECT ‘this is ‘+‘a test‘;                         返回值this a test

SELECT CONCAT(‘this is ‘,‘a test‘) from dual;   返回值this a test

SELECT ‘this is ‘||‘a test‘ from dual;           返回值this a test

分类: ORACLE

时间: 2024-10-01 15:50:10

Oracle中奇怪的【不等于号】的相关文章

Oracle 中 sys和system帐号的区别

安装完成oracle后,通常都会发现有2个系统级别的帐号可以登录,但从来没有考虑过这2个帐号之间有什么区别,后来从一位老师那里得知了区别所在,便记录下来. sys 帐号登录,必须带上另外一个参数  sysdba或者是sysoper, sysdba表示登陆后可以操作instance和database:sysoper表示登陆后只可以操作instance. system帐号登录,无须带上额外参数,表示登陆后只可以操作database.

浅析Oracle中的不等于号

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

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

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

Oracle层次查询和分析函数在号段选取中的应用

转自:http://www.itpub.net/thread-719692-1-1.html 摘要一组连续的数,去掉中间一些数,如何求出剩下的数的区间(即号段)?知道号段的起止,如何求出该号段内所有的数?知道一个大的号段范围和已经取过的号段,如何求出可用的号段?利用Oracle提供的强大的查询功能以及分析函数,我们可以很轻松的解决上述问题. 关键词:号段选取.连续数.断点.层次查询.分析函数.connect by.rownum.level.lead.lag 1.        问题的提出在实际工

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

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

Oracle中的DDL,DML,DCL总结

转自http://blog.csdn.net/w183705952/article/details/7354974 DML(Data Manipulation Language,数据操作语言):用于检索或者修改数据.    DML包括:  SELECT:用于检索数据:        INSERT:用于增加数据到数据库:        UPDATE:用于从数据库中修改现存的数据         DELETE:用于从数据库中删除数据. DDL(Data Definition Language,数据定