Перш за все, нульові та нульові рядки не завжди трактувались Oracle як однакові. Нульовий рядок - це, за визначенням, рядок, що не містить символів. Це зовсім не те, що нуль. NULL - це, за визначенням, відсутність даних.
П’ять-шість років тому, близько того, нульовий рядок оброблявся Oracle не так, як нульовий. Хоча, як і нуль, нульовий рядок був рівним усьому і відрізнявся від усього (що, на мою думку, добре для нуля, але абсолютно НЕПРАВИЛЬНО для нульового рядка), принаймні довжина (нульовий рядок) повертала б 0, як слід, оскільки нульовий рядок є рядок нульової довжини.
В даний час в Oracle, length (null) повертає null, що, на мою думку, нормально, але length (null string) також повертає null, що є абсолютно НЕПРАВИЛЬНИМ.
Я не розумію, чому вони вирішили почати ставитися до цих двох різних "цінностей" однаково. Вони означають різні речі, і програміст повинен мати можливість діяти на кожного по-різному. Той факт, що вони змінили свою методологію, говорить мені, що вони насправді не мають уявлення про те, як слід поводитися з цими цінностями.