Oracle е много много много стар.
Обратно в 80's когато беше разработен (и преди да е имало някакви стандарти), те смятаха, че това е добра идея и като се има предвид начинът Oracle съхранява своите стойности, наистина беше така.
Ето как Oracle съхранява данни (взети от документацията ):

В данните не се съхранява тип данни, а само дължината на данните и самите данни.
Ако NULL възниква между две колони със стойности, съхранява се като един байт, което означава, че колоната има дължина 0 (всъщност, 0xFF ). Завършващ NULL s изобщо не се съхраняват.
Така че, за да съхраните стойността 'test' , Oracle трябва да съхранява 5 байта:04 74 65 73 74 .
Въпреки това, за да съхранявате както празен низ, така и NULL , Oracle просто трябва да зададете дължината на данните на 0 .
Много умно, ако вашите данни трябва да се съхраняват на 20 Mb твърди дискове, които струват 5,000$ всеки.
По-късно, когато се появиха стандартите, това вече не беше толкова добра идея, но по това време вече имаше много и много код, разчитащ на NULL и '' е едно и също нещо.
Създаване на VARCHAR да направиш такова разграничение ще счупити на кода.
За да го поправят, те преименуваха VARCHAR към VARCHAR2 (което не е част от нито един стандарт), заяви, че VARCHAR2 щеникога прави разлика между NULL и празен низ и призова всички да използват този тип данни вместо това.
Сега те вероятно чакат последния човек, който е използвал VARCHAR в Oracle база данни да умре.