Ano, to je způsob, jakým Oracle funguje. Prázdné řetězce jsou považovány za hodnoty null.
Můžete to samozřejmě "opravit" na úrovni aplikace - například uložením " " hodnoty, jak jste navrhli – ale nejprve zvažte, jaký přesně je rozdíl mezi hodnotami „prázdného řetězce“ ve srovnání s hodnotami NULL hodnoty? Proč s nimi musíte zacházet jinak? Kdysi jsem se také potýkal s tímto dilematem, ale obvykle jsem zjistil, že existuje jen velmi málo případů, kdy opravdu potřebuji rozeznat rozdíl.