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.