Mahlzeit!
SELECT 'a'||null||'b' result FROM dual;
RE
--
ab
Das ist der Hammer- eben habe ich das auch ausprobiert. Es stimmt tatsächlich! Welche Version verwendest du? In der 9.2.0.1.0 klappt es; jedoch weiß ich von früheren Versionen, daß man dort immer NVL verwenden mußte.
Wenn man’s weiss… logisch begründen liesse es sich auch,
obwohl ich die ANSI-Variante schlüssiger finde.
Ich vermute, hier hat Oracle die Funktion des Konkatenations-Operators verändert - werde mal ein bißchen im Netz stöbern.
Was sagt eigentlich ANSI zu dem hier:
INSERT INTO my_table
VALUES (’’);
Das wäre ja eigentlich NICHT mit NULL zu füllen, weil ich ja
explizit die leere Zeichenkette reinschreibe und nicht etwa
nichts/undefiniert.
Das ist eine der grundlegenden Probleme bei allen mir bekannten Datenbanken. Sie inserten NULL, obwohl sie eigentlich eine leere Zeichenkette reinsetzen sollten. Wenn du mit anderen Hochsprachen arbeitest, z.B. C oder C++, mußt du dies explizit abfragen, da diese die Unterscheidung sehr wohl können 
Wenn ich mich recht entsinne, stand das aber früher in den Handbüchern drin… auch hier muß ich mal wieder lesen.
Gruß
Sancho