Я сомневаюсь, что интервьюеры хотели, чтобы вы точно знали, как SQL-сервер хранит null
s, смысл такого вопроса - заставить вас задуматься о том, как вы будете хранить специальные значения. Вы не можете использовать значение часового (или магическое число), так как это приведет к тому, что любые строки с этим значением внезапно станут null
.
Есть довольно много способов добиться этого. Наиболее простые 2, которые приходят на ум, - это хранить флаг с каждым значением NULL, которое в основном является флагом isNull
(это также в основном то, как Nullable<T>
работает в .NET). Второй способ - хранить с каждой строкой растровое изображение пустых флагов, по одному для каждого столбца.
Когда сталкиваешься с такими вопросами на собеседовании, самый худший ответ - сидеть и смотреть безучастно. Подумайте вслух, признайте, что вы не знаете, как это делает SQL Server, а затем представьте некоторые разумные способы сделать это. Вы также должны быть готовы немного поговорить о том, почему вы выбрали один метод вместо другого, и каковы плюсы и минусы каждого.