Tidak, perlakuan Oracle terhadap null adalah istimewa, berbeda dari orang lain, dan tidak konsisten dengan standar ANSI. Namun dalam pembelaan Oracle, hal itu mungkin menetap dan berkomitmen untuk perlakuan ini jauh sebelum ada standar ANSI yang harus konsisten!
Semuanya dimulai dari fakta bahwa Oracle menyimpan string dengan jumlah karakter diikuti oleh data string. NULL diwakili oleh jumlah karakter nol tanpa data string berikut - yang persis sama dengan string kosong (''). Oracle tidak memiliki cara untuk membedakannya.
Ini mengarah pada beberapa perilaku unik, seperti kasus rangkaian ini. Oracle juga memiliki fungsi LENGTH untuk mengembalikan panjang string, tetapi ini telah didefinisikan dengan cara yang berlawanan, sehingga LENGTH('') mengembalikan NULL bukan nol. Jadi:
LENGTH('abc') + LENGTH('') IS NULL
LENGTH('abc' || '') = 3
yang menurut saya melanggar prinsip matematika dasar.
Tentu saja, pengembang Oracle menjadi begitu terbiasa dengan hal ini sehingga banyak dari kita bahkan tidak dapat melihat ada yang salah atau aneh tentang hal itu - beberapa bahkan akan berpendapat bahwa seluruh dunia salah dan bahwa string kosong dan NULL adalah hal yang sama!