2017-10-25 5 views
0

ich folgende Skript haben:COALESCE: SQL Server vs Oracle

SELECT 1 
FROM Table t 
WHERE COALESCE(NULL, t.ID) = NULL; 

t ist leer. Die Abfrage gibt 1 für Oracle zurück und gibt nichts für SQL Server zurück.

Was ist eine Ausgabe von COALESCE Operation für SQL Server? Können wir diesen Code so korrigieren, dass er sich für beide DB auf die gleiche Weise verhält?

+0

Es ist unmöglich, dass Oracle "1" zurückgibt, wenn die Tabelle leer ist. –

+1

Nicht wahr in Bezug auf Oracle. Ihre Abfrage gibt in keinem Datenbankprodukt, das SQL (Oracle, SQL Server und ** alle ** andere SQL-Datenbanken) verwendet, Zeilen zurück, unabhängig davon, ob "t" leer ist oder nicht. Denn nichts ist jemals gleich "NULL". – mathguy

Antwort

1

Was ist der Punkt von colaesce hier als Ihr erstes Argument ist NULL. dies nur tun:

SELECT 1 
FROM Table t 
where t.ID IS NULL; 
0

Das Problem ist nicht die Coalesce Funktion ist. Wenn die t-Tabelle leer ist, werden keine Zeilen gefunden und von SQL Server zurückgegeben.