【发布时间】:2011-11-14 02:29:36
【问题描述】:
ANSI-92 SQL 要求与 NULL 的比较结果为“假”,例如:
SELECT * FROM table WHERE field = NULL
SELECT * FROM table WHERE field != NULL
两者都不会返回任何行,因为 NULL 无法像那样进行比较。相反,必须使用谓词IS NULL 和IS NOT NULL:
SELECT * FROM table WHERE field IS NULL
SELECT * FROM table WHERE field IS NOT NULL
研究表明,Oracle 1、PostgreSQL、MySQL 和 SQLite 都支持 ANSI 语法。将 DB2 和 Firebird 添加到该列表中。
除了关闭ANSI_NULLS 的SQL Server 之外,还有哪些其他RDBMS 支持非ANSI 语法?
1 整个空字符串 = NULL 尽管一团糟。
【问题讨论】:
-
Oracle(此处为 11g)完全按照您在两种情况下的描述。