这个问题来自我之前的帖子。
我很好奇为什么:
select * from TPM_USER where '' = ''
返回零行,但是:
select * from TPM_USER where 1 = 1
返回表中的每一行。这是每个 SQL 标准,还是 Oracle 特定的?
Oracle SQL 小提琴。
以下工作按预期进行:
PostgreSQL SQL 小提琴
SQL Server SQL 小提琴
mySQL SQL 小提琴
Oracle 不区分空字符串和NULL.
这就是为什么推荐的字符串数据类型是VARCHAR2而不是VARCHAR:后者应该做这种区分,但目前没有。
在使用的三价逻辑中SQL,NULL = NULL(在 Oracle 中是 的同义词'' = '')评估为NULL(not FALSEbut NULL),因此被WHERE子句过滤掉。
在 Oracle 中,空字符串等同于 NULL。您不使用=NULL 值。