• 售前

  • 售后

热门帖子
入门百科

浅析Oracle中的不等于号

[复制链接]
明功 显示全部楼层 发表于 2021-10-26 14:12:09 |阅读模式 打印 上一主题 下一主题
关于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'的记录。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作