Almacenar un NULL en una columna no cuesta ni ahorra espacio específicamente. Para datos de longitud fija, todo el espacio aún está reservado.
Por otro lado, los datos de longitud variable requieren solo la longitud de los datos más la sobrecarga para almacenar la longitud real. Por ejemplo, un VARCHAR(n) usará 2 bytes de datos para indicar la longitud real, por lo que el espacio de almacenamiento requerido siempre es n+2.
Además, debe mencionarse que si SET ANSI_PADDING ON, un char(n) con un valor NULL se comportará como un VARCHAR(n).
Pase lo que pase, no reconocerá el "ahorro" de espacio al almacenar valores NULL al usar SQL Server 2000 o SQL Server 2005. SQL Server 2008 introduce el concepto de una columna dispersa, que puede generar ahorros para las columnas que son principalmente NULL.