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

(0)

相关推荐

  • 浅析Oracle中的不等于号

    关于Oracle中的不等于号: 在Oracle中, <> != ~= ^= 都是不等于号的意思.都可以使用. 但是奇怪是的, 我想拿出price不是180000的商品时:(price是Number类型的) SELECT id, name  FROM product where price<> 180000; 执行这个语句时,priceis null  的记录不出来.也就是拿不到price是null的商品.必须使用: SELECT id, name  FROM product whe

  • 浅析Oracle中sys、system和Scott用户下的数据库连接问题

    system默认:manager sys默认:change_on_install 使用SQL Plus登录数据库时,system使用密码manager可直接登录. 由于为自己的密码时更改过的,所以我的密码不是使用manager登陆,但是代码格式依然是差不多的. 代码示例: conn system 输入密码:1234 conn system/输入密码 但如果是sys用户,密码必须加上as sysdba,即完整密码为:change_on_install as sysdba 代码示例: conn sy

  • 浅析Oracle中char和varchar2的区别

    char是定长的 char(10)   varchar2(10)  同样存 a ,char占用了10个字符,varchar2 只占用了 一个字符(一个中文占两个字符,英文占一个). 但是char的查询速度要比varchar2快.varchar2,Oracle还要进行语法分析,这个字段是多少位的,所以慢一些.相对于上千万的记录来说.一般的项目 没什么区别,随便用.

  • JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别

    一.JavaScript"=="的作用 1.当==两边的内容是字符串时,则比较字符串的内容是否相等. 2.当==两边的内容是数字时,则比较数字的大小是否相等. 3.当==两边的内容是对象或者是对象的函数属性时,则比较内存地址是否相等. 二.==和===的区别 ==用于一般比较,===用于严格比较,==在比较的时候可以转换数据类型,===严格比较,只要类型不匹配就返回flase. 举例说明: <script type="text/javascript">

  • javaScript中两个等于号和三个等于号之间的区别介绍

    一言以蔽之:==先转换类型再比较,===先判断类型,如果不是同一类型直接为false. ===表示恒等于,比较的两边要绝对的相同 alert(0 == ""); // true alert(0 == false); // true alert("" == false); // true alert(0 === ""); // false alert(0 === false); // false alert("" === fal

  • 探讨Oracle中的&号问题

    在Oracle中inset里面的内容如果中有'&'号,有可能会插入失败,下面介绍一下方法:1.在pl/sql中:&可以用&&代替2.在sql developer中:&可以用||chr(38)||代替

  • Oracle 中 table 函数的应用浅析

    表函数可接受查询语句或游标作为输入参数,并可输出多行数据.该函数可以平行执行,并可持续输出数据流,被称作管道式输出.应用表函数可将数据转换分阶段处理,并省去中间结果的存储和缓冲表. 1. 用游标传递数据 利用游标 REF CURSOR 可将数据集(多行记录)传递到PL/SQL函数: SELECT * FROM TABLE (myfunction (CURSOR (SELECT * FROM mytab))); 2. 利用两个实体化视图(或表)作为样板数据 CREATE MATERIALIZED

  • C#中==(双等于号)与equals()区别详解

    这两种方式也是大家在日常编码工作当中用的比较多的判断方式.之前在使用的时候也没太关注两者在比较不同类型的时候存在哪些区别 今天就和大家一起深入了解一下其中区别 一.值类型比较判断 对于值类型来说 两者之间比较的都是"内容"是否相同,即值类型中的数值是否一样,很显然此时两者是划等号的,代码展示如下: #region 值类型判断 int i = 10; int j = 10; Console.WriteLine($"双等于号判断结果为:{(i == j)}"); Con

  • 详解oracle mysql 中的“不等于“ <> != ^= is not

    目录 oracle mysql 中的“不等于“ <> != ^= is not oracle mysql oracle中的!=与<>和^= oracle mysql 中的“不等于“ <> != ^= is not oracle oracle中的 != 与 <> 和 ^= 都是不等于,逻辑上没有区别.官方推荐 <>,因为跨平台,可移植,兼容性强. 不等于,隐含着不为空,即is not null. name <> 'Mike',会把名字不

  • oracle中通配符和运算符的使用方法介绍

    用于where比较条件的有: 等于:=.<.<=.>.>=.<> 包含:in.not in exists.not exists 范围:between...and.not between....and 匹配测试:like.not like Null测试:is null.is not null 布尔链接:and.or.not 通配符: 在where子句中,通配符可与like条件一起使用.在Oracle中: %(百分号): 用来表示任意数量的字符,或者可能根本没有字符. _(

随机推荐