'IN'子句的奇怪行为有效

dom*_*enk 3 sql string oracle null behavior

我找到了这个网站:这里

它很好地描述了它的工作原理以及为什么不工作.

但我的问题有点不同.

select 'true' from dual where 'test' not in ('test2','');
Run Code Online (Sandbox Code Playgroud)

为什么这个查询没有退回一行?
''像这样处理null

谢谢你的帮助

Mar*_*ith 12

你的怀疑是正确的.

所以你的查询基本上就是

WHERE 'test' <> 'test2' and  'test' <> Null
Run Code Online (Sandbox Code Playgroud)

评估为

WHERE true and unknown
Run Code Online (Sandbox Code Playgroud)

这是 unknown

select * from dual where '' = '';
Run Code Online (Sandbox Code Playgroud)

会给出相同(缺乏)的结果