Jeśli pole ma stałą szerokość, przechowywanie NULL zajmuje tyle samo miejsca, co każda inna wartość - szerokość pola.
Jeśli pole ma zmienną szerokość, wartość NULL nie zajmuje miejsca.
Oprócz miejsca wymaganego do przechowywania wartości null istnieje również obciążenie związane z posiadaniem kolumny dopuszczającej wartość null. Dla każdego wiersza jeden bit jest używany na kolumnę dopuszczającą wartość null, aby oznaczyć, czy wartość dla tej kolumny jest null, czy nie. Dzieje się tak niezależnie od tego, czy kolumna ma stałą czy zmienną długość.
Powód rozbieżności, które zauważyłeś w informacjach z innych źródeł:
-
Początek pierwszego artykułu jest nieco mylący. Artykuł nie mówi o koszcie przechowywania wartości NULL, ale o koszcie posiadania umiejętności przechowywać NULL (tj. koszt uczynienia kolumny dopuszczalną wartością null). Prawdą jest, że utworzenie kolumny z wartością null kosztuje trochę miejsca w pamięci, ale gdy już to zrobisz, zapisanie wartości NULL zajmuje mniej miejsca niż zapisanie wartości (dla kolumn o zmiennej szerokości).
-
Drugie łącze wydaje się być pytaniem o Microsoft Access. Nie znam szczegółów, w jaki sposób Access przechowuje wartości NULL, ale nie zdziwiłbym się, gdyby różnił się od SQL Server.