Aparentemente Oracle no parece distinguir entre cadenas vacías y valores nulos. P.ej.Oracle no distingue entre nulos y cadenas vacías?
Select name from TABLE_A where id=100;
ID NAME
100 null
Update TABLE_A set NAME='' where id=100;
SELECT -->
ID NAME
100 null
SELECT length(NAME) FROM TABLE_A WHERE id=100;
null
No puedo pensar en ninguna buena razón por Oracle se construiría a comportarse de esta manera (es lo que hace esto en sqlplus así? -Estoy acceder a través de una interfaz Java, el artículo de referencia utiliza una cliente php).
¿No querría al menos distinguir la longitud 0 de la longitud indefinida? ¿Es esto un problema conocido? Comportamiento intencional para un propósito específico ¿Una larga disputa en la teoría de bases de datos? ¿Lo que da?
(Esto fue motivado por la respuesta de Matt Solnit a this question.)
Esta pregunta se ha publicado como relacionada, aunque no aborda el "por qué": http://stackoverflow.com/questions/1171196/difference-between-varchar-and-varchar2 –