Oracle je velmi velmi starý.
Zpátky v 80's když to bylo vyvinuto (a předtím, než existovaly nějaké standardy), mysleli si, že je to dobrý nápad, a dali to tak Oracle ukládá své hodnoty, skutečně to tak bylo.
Zde je návod, jak Oracle ukládá data (převzato z dokumentace ):

V datech není uložen žádný datový typ, pouze délka dat a samotná data.
Pokud je NULL vyskytuje se mezi dvěma sloupci s hodnotami, je uložen jako jeden bajt, což znamená, že sloupec má délku 0 (ve skutečnosti 0xFF ). Koncová NULL s nejsou vůbec uloženy.
Takže pro uložení hodnoty 'test' , Oracle potřebuje uložit 5 bajtů:04 74 65 73 74 .
Chcete-li však uložit jak prázdný řetězec, tak NULL , Oracle stačí nastavit délku dat na 0 .
Velmi chytré, pokud mají být vaše data uložena na 20 Mb pevné disky, které stojí 5,000$ každý.
Později, když se objevily standardy, už to nebyl tak dobrý nápad, ale v té době již existovalo mnoho a spousta kódu, který se spoléhal na NULL a '' být to samé.
Vytváření VARCHAR udělat takové rozlišení rozbije tuny kódu.
Aby to napravili, přejmenovali VARCHAR na VARCHAR2 (který není součástí žádného standardu), uvedl, že VARCHAR2 nikdy rozlišovat mezi NULL a prázdný řetězec a vyzval všechny, aby místo toho používali tento datový typ.
Nyní pravděpodobně čekají na poslední osobu, která použila VARCHAR v Oracle databáze zemřít.