Se il campo ha una larghezza fissa, la memorizzazione di NULL occupa lo stesso spazio di qualsiasi altro valore:la larghezza del campo.
Se il campo è di larghezza variabile, il valore NULL non occupa spazio.
Oltre allo spazio richiesto per memorizzare un valore null, c'è anche un sovraccarico per avere una colonna nullable. Per ogni riga viene utilizzato un bit per colonna nullable per contrassegnare se il valore per quella colonna è null o meno. Questo è vero sia che la colonna sia di lunghezza fissa o variabile.
Il motivo delle discrepanze che hai riscontrato nelle informazioni provenienti da altre fonti:
-
L'inizio del primo articolo è un po' fuorviante. L'articolo non parla del costo per memorizzare un valore NULL, ma del costo per avere l'capacità per memorizzare un NULL (ovvero il costo per rendere nullable una colonna). È vero che costa qualcosa nello spazio di archiviazione per rendere nullable una colonna, ma una volta fatto ciò richiede meno spazio per memorizzare un NULL rispetto a quello necessario per memorizzare un valore (per colonne a larghezza variabile).
-
Il secondo collegamento sembra essere una domanda su Microsoft Access. Non conosco i dettagli di come Access archivia i NULL, ma non sarei sorpreso se fosse diverso da SQL Server.