Oracle PL/SQL where 条件:不等于 0 或 null
Oracle PL/SQL where condition: not equal to 0 or null
我选择 id
,它不能等于 0,值也不能是 (null)
。我写道:
WHERE id IS NOT NULL (+) and id not in ('0')
我有 2 个错误
Error(9,5): PL/SQL: SQL Statement ignored
Error(38,119): PL/SQL: ORA-00933: SQL command not properly ended
I change it to:
WHERE id IS NOT NULL (+) and id is not ('0')
出现同样的错误。 WHERE
子句应该怎么写?
不应该吗
WHERE id IS NOT NULL
AND id != 0
(+) 用于外连接。你应该写:
Where nvl(Id,0)<>0
您可以将条件简化为:
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
列上使用索引,这可能会对性能产生不良影响。
我选择 id
,它不能等于 0,值也不能是 (null)
。我写道:
WHERE id IS NOT NULL (+) and id not in ('0')
我有 2 个错误
Error(9,5): PL/SQL: SQL Statement ignored
Error(38,119): PL/SQL: ORA-00933: SQL command not properly ended I change it to:
WHERE id IS NOT NULL (+) and id is not ('0')
出现同样的错误。 WHERE
子句应该怎么写?
不应该吗
WHERE id IS NOT NULL
AND id != 0
(+) 用于外连接。你应该写:
Where nvl(Id,0)<>0
您可以将条件简化为:
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
列上使用索引,这可能会对性能产生不良影响。