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
这就有值了,但这并不是我们想要的数据。
用另一种方法实现:
既然 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;