我在Oracle 官方文档中看到了这个声明:
在 Microsoft SQL Server 中,只有具有可变长度数据类型的列才能存储 NULL 值。当您创建允许具有固定长度数据类型的 NULL 的列时,该列会自动转换为系统可变长度数据类型...
我从来没有在SQL Server 文档中读到过这个,也没有经历过这样的事情。相反:在 SQL Server 中,固定长度的数据类型(例如 int 和 float,还有 char)被大量使用并且即使在 NULLable 时也非常有效地存储。
这个 Oracle 声明背后有什么理由吗?!
嗯,这就是Sybase 的情况,它是 SQL Server 的祖先。不幸的是,我没有找到任何关于何时进行此确切更改的信息,但根据这篇文章,该引擎已在 SQL Server 2005 中完全重写。由于任何现代 SQL Server 版本都不是这种情况,因此您可以忽略它陈述。