Я думаю, что 0 можно использовать вместо NULL, если вы не ожидаете, что 0 будет использоваться в качестве значения.
То есть, например, ваш столбец является внешним ключом. Поскольку внешние ключи обычно не начинаются с 0, а начинаются с 1, это означает, что вы не ожидаете, что 0 будет использоваться в качестве значения.
Затем вы можете использовать 0 для обозначения состояния значения «Нет». Использование его в соединениях не будет соответствовать ни одному столбцу другой таблицы. Таким образом, имея тот же эффект, что и NULL.
Но если у вас есть столбец, где значение 0 действительно имеет значение. Как например поле количества. И кроме этого, вам также нужно выразить и пустое значение. Например, для обозначения того, что количество еще не было введено. Тогда вам нужен NULL для этого.
Надеюсь, что это имеет смысл.