En primer lugar, las cadenas nulas y nulas no siempre fueron tratadas como iguales por Oracle. Una cadena nula es, por definición, una cadena que no contiene caracteres. Esto no es lo mismo que un nulo. NULL es, por definición, la ausencia de datos.
Hace cinco o seis años más o menos, la cadena nula fue tratada de manera diferente a nula por Oracle. Mientras que, como nulo, la cadena nula era igual a todo y diferente de todo (lo que creo que está bien para nulo, pero totalmente INCORRECTO para la cadena nula), al menos la longitud (cadena nula) devolvería 0, como debería ser ya que la cadena nula es Una cadena de longitud cero.
Actualmente en Oracle, la longitud (nulo) devuelve nulo, lo que supongo que está bien, pero la longitud (cadena nula) también devuelve nulo, lo cual es totalmente INCORRECTO.
No entiendo por qué decidieron comenzar a tratar estos 2 "valores" distintos de la misma manera. Significan cosas diferentes y el programador debe tener la capacidad de actuar sobre cada uno de diferentes maneras. El hecho de que hayan cambiado su metodología me dice que realmente no tienen idea de cómo deberían tratarse estos valores.