I came across this statement in the official Oracle documentation:

In Microsoft SQL Server, only columns with variable-length data types can store NULL values. When you create a column that allows NULLs with a fixed-length data type, the column is automatically converted to a system variable-length data type...

I have never read about this in the SQL Server docs nor have I experienced such a thing. On the contrary: in SQL Server, fixed-length data types (such as int and float, but also char) are heavily used and stored very efficiently even when NULLable.

Is there any rationale behind this Oracle statement?!

  • Some info on that here stackoverflow.com/a/13536831/73226 BTW if you click the "back" icon on your link to go to the previous page it states Microsoft SQL Server is used in this document to refer to Microsoft SQL Server 6.5, Microsoft SQL Server 7.0, and Microsoft SQL Server 2000 unless otherwise stated. Commented Sep 19, 2017 at 17:40

1 Answer 1


Well, this was the case for Sybase, which is the ancestor for SQL Server. Unfortunately, I did not find any information as to when this exact change was made, but according to this article the engine was fully rewritten in SQL Server 2005. As this is not the case for any modern SQL Server edition, you can just ignore this statement.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.