Oracle
sangat sangat sangat tua.
Kembali ke 80's
ketika dikembangkan (dan sebelum ada standar apa pun) mereka pikir itu adalah ide yang bagus, dan kemudian diberikan cara Oracle
menyimpan nilainya, itu benar-benar.
Begini caranya Oracle
menyimpan data (diambil dari dokumentasi ):
Tidak ada tipe data yang disimpan di dalam data, hanya panjang data dan data itu sendiri.
Jika NULL
terjadi antara dua kolom dengan nilai, itu disimpan sebagai satu byte yang berarti kolom memiliki panjang 0
(sebenarnya, 0xFF
). Mengikuti NULL
s tidak disimpan sama sekali.
Jadi untuk menyimpan nilai 'test'
, Oracle
perlu menyimpan 5 byte:04 74 65 73 74
.
Namun, untuk menyimpan string kosong dan NULL
, Oracle
hanya perlu mengatur panjang data ke 0
.
Sangat cerdas jika data Anda disimpan di 20 Mb
hard drive seharga 5,000$
masing-masing.
Kemudian, ketika standar muncul, itu bukan ide yang bagus lagi, tetapi pada saat itu sudah ada banyak sekali kode yang mengandalkan NULL
dan ''
menjadi hal yang sama.
Membuat VARCHAR
melakukan perbedaan seperti itu akan menghancurkan ton kode.
Untuk memperbaikinya, mereka mengganti nama VARCHAR
ke VARCHAR2
(yang bukan merupakan bagian dari standar apapun), menyatakan bahwa VARCHAR2
akan tidak pernah membedakan antara NULL
dan string kosong dan mendesak semua orang untuk menggunakan tipe data ini.
Sekarang mereka mungkin sedang menunggu orang terakhir yang menggunakan VARCHAR
di Oracle
database mati.