CREATE TABLE test (fld INT);
SELECT fld FROM test;
SELECT coalesce(fld, 0) fld FROM test;
SELECT coalesce(fld, '0') fld FROM test;
DROP TABLE test;
macht:
Table created.
no rows selected
SELECT coalesce(fld, 0) fld FROM test
*
ERROR at line 1:
ORA-00904: invalid column name
SELECT coalesce(fld, '0') fld FROM test
*
ERROR at line 1:
ORA-00904: invalid column name
Table dropped.
Was mach ich falsch? Will nicht glauben dass oracle kein coalesce hat,
Gleich noch eine frage: Ist der LEFT JOIN Syntax in der FROM Klausel
nicht möglich?
Ich finde ein
SELECT ...
FROM
tbl1
LEFT JOIN tbl2 USING (fld1, fld2)
einfach schoener als ein
SELECT ...
FROM
tbl1,
tbl2
WHERE
(
tbl1.fld1 = tbl2.fld1 (+)
AND
tbl1.fld2 = tbl2.fld2 (+)
)
Lg und Danke,
AXEL.
ich würde mal in der Doku (steht irgendwo auf der Homepage) von Oracle
nachsehen. Also ich kenne coalesce nicht, das heißt allerdings nicht,
das Oracle das nicht unterstützt, aber es hat den Anschein, als sei es
so, nachdem da ein Stern unter dem Begriff steht und die Fehlermeldung
von Oracle recht gut ist.
mfg
Philipp
Alexander Straschil schrieb:
> ich würde mal in der Doku (steht irgendwo auf der Homepage) von Oracle
> nachsehen. Also ich kenne coalesce nicht, das heißt allerdings nicht,
> das Oracle das nicht unterstützt, aber es hat den Anschein, als sei es
Bin der Sache nachgegangen, nur zur Info was coalesce ist:
coalesce(a, b, c, ...) retouniert den ersten Wert der nicht NULL ist,
ein praktische Sache weil man dann nicht statt coalesce(a, b, c, d)
ein nvl(a, nvl(b, nvl(c, nvl(d)))) machen muss :-)
Wird aber anscheinend bei Orcale erst ab Version 9 unterstützt, siehe
http://www.muniqsoft.de/tipps/9i/9i_sql.htm
Ist aber SQL92:
http://www.cs.pdx.edu/~len/587/sql-92.pdf
Seite 133, 478 (war nicht so leicht das pdf zu finden ...)
Lg,
AXEL.