Oracle とてもとてもとても古いです。
80年代に戻る それが開発されたとき(そして標準が存在する前に)、彼らはそれが良い考えであると考え、そして Oracleに道を譲りました その値を保存します、それは本当にそうでした。
Oracleの方法は次のとおりです データを保存します(ドキュメントから取得) ):
データ型はデータ内に保存されず、データ長とデータ自体のみが保存されます。
NULLの場合 値を持つ2つの列の間に発生し、1バイトとして格納されます。これは、列の長さが 0であることを意味します。 (実際には、 0xFF )。末尾のNULL はまったく保存されません。
したがって、値を保存するには'test' 、 Oracle 5バイトを格納する必要があります: 04 74 65 73 74 。
ただし、空の文字列と NULLの両方を格納するには 、 Oracle データ長を0に設定するだけです 。
データを20Mb に保存する場合は、非常にスマートです 5,000 $のハードドライブ それぞれ。
その後、標準が登場したとき、それはもはやそれほど良い考えではありませんでしたが、その時までに、<code> NULLに依存するコードがすでにたくさんありました。 および'' 同じことです。
VARCHARを作成する そのような区別をすることはトンを壊します コードの。
これを修正するために、彼らは VARCHARに名前を変更しました VARCHAR2へ (これは標準の一部ではありません)、 VARCHAR2 決して NULLを区別する 空の文字列を使用して、代わりにこのデータ型を使用するように全員に促しました。
今、彼らはおそらく VARCHARを使用した最後の人を待っています Oracleで 死ぬデータベース。