Oracle SQL-Where语句-不为NULL且不在

Oracle SQL-Where语句-不为NULL且不在,sql,oracle,Sql,Oracle,我的sql中的WHERE语句有问题 我想要所有非空值,但我也想要排除值为X或值为Y的记录 WHERE FIELD_A IS NOT NULL AND FIELD_A != '4' FIELD_A OR != '5' 但是结果是不正确的。。。 我想也许 WHERE FIELD_A IS NOT NULL AND FIELD_A NOT IN ('4','5') 但我认为这是一种不好的做法,不会产生可靠的结果 有人能帮忙吗?实际上,这正是您想要的: WHERE FIELD_A NOT IN (

我的sql中的WHERE语句有问题

我想要所有非空值,但我也想要排除值为X或值为Y的记录

WHERE FIELD_A IS NOT NULL AND FIELD_A != '4' FIELD_A OR != '5'
但是结果是不正确的。。。 我想也许

 WHERE FIELD_A IS NOT NULL AND FIELD_A NOT IN ('4','5')
但我认为这是一种不好的做法,不会产生可靠的结果


有人能帮忙吗?

实际上,这正是您想要的:

WHERE FIELD_A NOT IN ('4', '5')  -- don't use sigle quotes if the values are numbers
当任一参数为
NULL
时,几乎所有布尔运算符都返回
NULL
NULL
值过滤行的方式与
WHERE
子句中的“false”值过滤行的方式相同


在第二个例子中,明确无误。

正如Gordon所说,您也可以使用:

WHERE  FIELD_A != '4' AND  FIELD_A  != '5'

这完全是一样的。

不。你需要
而不是
。因此,为什么常量列表中的
不在
中是如此方便。使用and和NOT OR。然而,where子句始终为TRUENULL在where子句中既不为假也不为真。更准确的说法是NULL被解释为“非假非真”。数字存储在varchar2中-我还能省略单引号吗?@Ronald。如果值是字符串,那么一定要使用单引号。