为了账号安全,请及时绑定邮箱和手机立即绑定

请问关于Oracle中的不等于号?

请问关于Oracle中的不等于号?

白衣非少年 2019-07-02 15:03:50
关于Oracle中的不等于号
查看完整描述

4 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

SQL中,不等于一般写做“<>”或“!=”。

工具:sqlserver 2008 R2

步骤:

1、数据库中有学生表如下:

2、要查询出学号不等于2的信息,用如下两个语句均可:

12select from 学生 where 学号<>2;select from 学生 where 学号!=2;

3、查询结果

所以,两者的效果是相同的,都代表不等于。




查看完整回答
反对 回复 2019-07-07
?
墨色风雨

TA贡献1853条经验 获得超6个赞

在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'的记录。



查看完整回答
反对 回复 2019-07-07
?
MMTTMM

TA贡献1869条经验 获得超4个赞

sql中有两种方式表示不等于,一种是"<>"(不含引号),另一种是"!="(不含引号),用法是一样的。

补充:

1、不等于:<> ,!=,~= ,^= 这四个符号据说都可以在oracle中表示不等于,但是试了之后发现<> ,!= ,^=是可以的,~=不行,需要注意的是,只有<>是标准的sql语法,可以移植,其他的都是oracle平台的特性,移植性较差,所以开发中,尽量使用<>表示不等于。

2、等于:=不用多说,但是要进行null的等于判断时,须使用is null 或is not null,null只能通过is null或者is not null来判断,其它操作符与null操作都是false。 

3、例子,select * from bl_ip_dt where amount <> 800,这条语句查不出amount等于null 的记录,select * from bl_ip_dt where amount <> 800 or amount is null 才是可以的。



查看完整回答
反对 回复 2019-07-07
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

①select * from A where a not in (
select b from B)
② select a from A
minus
select b from B

查看完整回答
反对 回复 2019-07-07
  • 4 回答
  • 0 关注
  • 2383 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信