Со строками проще (хоть это и костыль будет): в них первый символ/бит можно выделить под информацию о наличии значения в строке. Как бы с int тоже, но этим мы урезаем размер хранимых значений. Да и выборки из БД с фильтрами по наличию значения будут сильно радовать.
Ну или обернуть сверху в какую-нибудь структуру со служебной информацией и хранить её уже.