Как правило, null
означает отсутствие значения.
select substr ('abcd',2, 1) from dual;
-- result: 'b'
select substr ('a',2, 1) from dual;
-- empty, because there is nothing at second position on string 'a';
select decode(substr('a',2,1),null, 'yes, is null') from dual;
-- result: 'yes, is null'
select decode('', null, 'yes, is null') from dual;
-- result: 'yes, is null'
Обновление: выбор реализации понятен.В большинстве языков, например в Java, строки помещаются в область памяти, а для программиста строковые переменные являются ссылками на область в памяти.Таким образом, пустая строка является ссылкой на область длины 0, но ссылка не является нулевой.Итак, ноль - это другое (без ссылки), и я думаю, что и вы: это лучше.