在Oracle中,为什么''=''错误?

Mik*_*sen 6 sql oracle oracle11g

这个问题来自我以前的帖子.

我很好奇为什么:

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

但是返回零行:

select * from TPM_USER where 1 = 1
Run Code Online (Sandbox Code Playgroud)

返回表中的每一行.这是根据SQL标准,还是这个Oracle特定的?

Oracle SQL小提琴.

以下工作如预期:

PostgreSQL SQL小提琴

SQL Server SQL小提琴

mySQL SQL小提琴

Qua*_*noi 7

Oracle不区分空字符串和NULL.

这就是为什么建议的字符串数据类型是VARCHAR2和不是VARCHAR:后者应该做这种区分,但目前没有.

其中三价逻辑SQL用途,NULL = NULL(在Oracle是同义'' = '')的计算结果为NULL(未FALSENULL),因此通过滤除WHERE子句.