条件:不等于0或null

时间:2016-01-05 21:50:35

标签: plsql oracle-sqldeveloper

我选择的id不能等于0,值也不能为(null)。我写道:

WHERE id IS NOT NULL (+) and id not in ('0')

我有2个错误

  

错误(9,5):PL / SQL:忽略SQL语句

     

错误(38,119):PL / SQL:ORA-00933:SQL命令未正确结束   我将其更改为:

WHERE id IS NOT NULL (+) and id is not ('0')  

发生了同样的错误。我应该写什么作为WHERE条款?

3 个答案:

答案 0 :(得分:6)

您可以将条件简化为:

WHERE id != 0

因为与NULL的比较(使用两个=或!=运算符)总是求值为NULL(在SQL中将其视为" false"在条件中),
因此NULL!= 0始终计算为FALSE,您可以在此条件下跳过此部分

WHRE id != 0 AND id IS NOT NULL

Braiam的回答Where nvl(Id,0)<>0虽然正确,但会阻止数据库在id列上使用索引,这可能会对执行产生不良影响。

答案 1 :(得分:5)

(+)用于外连接。你应该写:

Where nvl(Id,0)<>0

答案 2 :(得分:3)

不应该是

WHERE id IS NOT NULL
AND id != 0