Не, отношението на Oracle към нули е идиосинкратично, различно от това на всички останали и несъвместимо със стандартите ANSI. В защита на Oracle обаче, той вероятно се е спрял и се е ангажирал с това лечение много преди да има стандарт ANSI, с който да се съгласува!
Всичко започва от факта, че Oracle съхранява низове с брой знаци, последван от данните за низа. NULL се представя от нулев брой символи без следващи низови данни - което е точно същото като празен низ (''). Oracle просто няма начин да ги различи.
Това води до известно странно поведение, като този случай на конкатенация. Oracle също има функция LENGTH за връщане на дължината на низ, но това е дефинирано по противоположен начин, така че LENGTH('') връща NULL, а не нула. И така:
LENGTH('abc') + LENGTH('') IS NULL
LENGTH('abc' || '') = 3
което ми се струва, че нарушава основните математически принципи.
Разбира се, разработчиците на Oracle до такава степен са свикнали с това, че много от нас дори не виждат нищо нередно или странно в това – някои всъщност ще твърдят, че останалият свят греши и че празен низ и NULL са същото!