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;

 小結

  簡單記錄下,以便今后遺忘時再次查找。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM