当前位置:Gxlcms > 数据库问题 > Oracle如何查询不等于某数值

Oracle如何查询不等于某数值

时间:2021-07-01 10:21:17 帮助过:82人阅读

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

1、Oracle的不等于

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

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

  1. <span style="color: #008080;">--</span><span style="color: #008080;">查询 IS_JOB_CREATE != 2 的数量;</span>
  2. <span style="color: #0000ff;">SELECT</span> <span style="color: #ff00ff;">count</span>(<span style="color: #800000; font-weight: bold;">1</span><span style="color: #000000;">)
  3. </span><span style="color: #0000ff;">FROM</span><span style="color: #000000;"> gccsdb.CCS_MSALE_RCMD_SETTING t
  4. </span><span style="color: #0000ff;">where</span> t.IS_JOB_CREATE <span style="color: #808080;">!=</span> <span style="color: #800000; font-weight: bold;">2</span><span style="color: #000000;">;
  5. </span><span style="color: #008080;">--</span><span style="color: #008080;">> count(1) = 0</span>

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

  1. <span style="color: #008080;">--</span><span style="color: #008080;">查询 IS_JOB_CREATE != 2 的数量;</span>
  2. <span style="color: #0000ff;">SELECT</span> <span style="color: #ff00ff;">count</span>(<span style="color: #800000; font-weight: bold;">1</span><span style="color: #000000;">)
  3. </span><span style="color: #0000ff;">FROM</span><span style="color: #000000;"> gccsdb.CCS_MSALE_RCMD_SETTING t
  4. </span><span style="color: #0000ff;">where</span> t.IS_JOB_CREATE <span style="color: #808080;">!=</span> <span style="color: #800000; font-weight: bold;">2</span> <span style="color: #808080;">or</span> t.IS_JOB_CREATE <span style="color: #0000ff;">is</span> <span style="color: #0000ff;">null</span><span style="color: #000000;">;
  5. </span><span style="color: #008080;">--</span><span style="color: #008080;">> count(1) = 224</span>

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

2、改造

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

  1. <span style="color: #008080;">--</span><span style="color: #008080;">查询 IS_JOB_CREATE != 2 的数量;</span>
  2. <span style="color: #0000ff;">SELECT</span> <span style="color: #ff00ff;">count</span>(<span style="color: #800000; font-weight: bold;">1</span><span style="color: #000000;">)
  3. </span><span style="color: #0000ff;">FROM</span><span style="color: #000000;"> gccsdb.CCS_MSALE_RCMD_SETTING t
  4. </span><span style="color: #0000ff;">where</span> instr(concat(t.IS_JOB_CREATE, <span style="color: #800000; font-weight: bold;">1</span>), <span style="color: #800000; font-weight: bold;">2</span>) <span style="color: #808080;">=</span> <span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;">;
  5. </span><span style="color: #0000ff;">SELECT</span> <span style="color: #ff00ff;">count</span>(<span style="color: #800000; font-weight: bold;">1</span><span style="color: #000000;">)
  6. </span><span style="color: #0000ff;">FROM</span><span style="color: #000000;"> gccsdb.CCS_MSALE_RCMD_SETTING t
  7. </span><span style="color: #0000ff;">where</span> nvl(t.IS_JOB_CREATE,<span style="color: #800000; font-weight: bold;">1</span>) <span style="color: #808080;">!=</span> <span style="color: #800000; font-weight: bold;">2</span>;

 小结

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

Oracle如何查询不等于某数值

标签:今天   ott   not   isp   lock   rcm   oracle   back   小结   

人气教程排行