是否有允许“= NULL”语法的 DBMS?

Ric*_*ard 1 database-recommendation

受到 StackOverflow 问题的启发(为什么 SQL 不支持“= null”而不是“is null”?)。

是否有实际支持= NULL语法的 DBMS ?

Mar*_*ith 8

SQL 的某些实现确实将 x = NULL 视为相等,而 ISO/ANSI 标准则不然。例如,在 SQL Server 中,SET ANSI_NULLS OFF 导致 (NULL = NULL) = true。

SET ANSI_NULLS OFF
SELECT CASE WHEN NULL = NULL THEN 1 ELSE 0 END

SET ANSI_NULLS ON
SELECT CASE WHEN NULL = NULL THEN 1 ELSE 0 END
Run Code Online (Sandbox Code Playgroud)

  • 请注意,ANSI_NULLS OFF 选项会更改某些表达式的含义。您可以通过更改 ANSI_NULLS 选项来破坏或更改代码的行为。当 ANSI_NULLS 为 OFF 时,某些 SQL Server 功能也会被禁用。ANSI_NULLS OFF 是一个已弃用的功能,除非出于向后兼容性原因而必不可少,否则确实应该避免使用。 (4认同)
  • 旧的 sysbase 样式语法在诸如 where x in (null, 1, 2) 之类的结构中更具可读性,您必须将其重写为 where y is null 或 x in (1, 2)。顺便说一句,即使 ANSI 对 NULL 也不严格,也不能等于 NULL。看看它如何处理 GROUP BY。我真的很喜欢旧语法,但我经常与 ANSI 默认值作斗争。 (2认同)