使用“IN”子句时出现奇怪的行为问题

3
我发现了这个网站:这里 其中非常详细地解释了它的工作原理和不适用情况。
但我的问题有些不同。
select 'true' from dual where 'test' not in ('test2','');

为什么这个查询没有返回任何行?
空字符串''是否被视为null
感谢您的帮助。

2
我不确定(我是一个SQL Server专业人员),但我认为Oracle会将''视为null。 - HLGEM
可能是为什么Oracle 9i将空字符串视为NULL?的重复问题。 - APC
1
@APC - 不完全是。这个问题是“它是否...?”而不是“为什么它...?” - Martin Smith
1
@MartinSmith - 我认为那个问题的答案也回答了这个问题。因此在某种程度上它是一个重复的问题。 - APC
2个回答

12

你的猜想是正确的

因此,你的查询基本上是

WHERE 'test' <> 'test2' and  'test' <> Null

这个表达式的计算结果为

WHERE true and unknown

这是未知的

select * from dual where '' = '';

将会得到相同的(缺乏)结果


2

是的,在Oracle中,空字符串就是NULL。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接