Oracle如何查询不等于某数值

Posted Leung_柠檬先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle如何查询不等于某数值相关的知识,希望对你有一定的参考价值。

前言

  今天在使用Oracle查询“不等于”的时候,发现得到的数据与期望中的不一样,进一步查找资料才有发现。

1、Oracle的不等于

  在Oracle中,"<>"、"!="、"^="都是表示“不等于”,都可以拿来使用。

  但是,在我使用的时候,却发现得不到我想要的数据,如下:

 --查询 IS_JOB_CREATE != 2 的数量;
 SELECT count(1)
  FROM gccsdb.CCS_MSALE_RCMD_SETTING t
 where t.IS_JOB_CREATE != 2; 

 --> count(1) = 0

  执行语句之后,发现 t.IS_JOB_CREATE = NULL 的数据,一条也没有命中。查资料之后发现,NULL 只能用 is not null 或 is null 来判断,如下:

 --查询 IS_JOB_CREATE != 2 的数量;
 SELECT count(1)
  FROM gccsdb.CCS_MSALE_RCMD_SETTING t
 where t.IS_JOB_CREATE != 2 or t.IS_JOB_CREATE is null;

 --> count(1) = 224

  这就有值了,但这并不是我们想要的数据。

2、改造

  既然 NULL 不能用 != 命中,那我就想办法把 NULL 赋值。这里采用两种方式,如下:

 --查询 IS_JOB_CREATE != 2 的数量;
 SELECT count(1)
  FROM gccsdb.CCS_MSALE_RCMD_SETTING t
 where instr(concat(t.IS_JOB_CREATE, 1), 2) = 0;

 SELECT count(1)
  FROM gccsdb.CCS_MSALE_RCMD_SETTING t
 where nvl(t.IS_JOB_CREATE,1) != 2;

 小结

  简单记录下,以便今后遗忘时再次查找。

以上是关于Oracle如何查询不等于某数值的主要内容,如果未能解决你的问题,请参考以下文章

SQL中如何精确判断某字段含有某个值?

如何查询mysql某字段不等于1,2 - 技术问答

Oracle -- 多个count统计一张表中多个字段等于某值

sql查询中有一列中有NULL的数据,如何判断不为空的时候才进行操作?

Oracle中的伪列

oracle储存过程中,if条件为某变量不等于1,怎么写