Antworten:
coalescewird sowohl in Oracle als auch in SQL Server unterstützt und hat im Wesentlichen dieselbe Funktion wie nvlund isnull. (Es gibt einige wichtige Unterschiede, coalescedie eine beliebige Anzahl von Argumenten annehmen können und das erste Nicht-Null-Argument zurückgeben. Der Rückgabetyp für isnullstimmt mit dem Typ des ersten Arguments überein, der coalescezumindest unter SQL Server nicht zutrifft .)
COALESCE, was einen wichtigen Vorteil gegenüber hat NVL: Es führt eine Verknüpfungsbewertung durch, während NVLimmer beide Parameter bewertet werden. Vergleiche COALESCE(1,my_expensive_function)mit NVL(1,my_expensive_function).
COALESE()Funktion ist großartig und Sie können sie unter MSDOC> COALESCE nachlesen - dieselbe Syntax funktioniert auch unter Oracle. Wenn Ihre Daten leere Zeichenfolgen anstelle von NULL enthalten, benötigen Sie möglicherweise Folgendes : COALESCE(TRIM(Tbl.myField1), TRIM(Tbl.myField2)) AS "myNewField".
ISNULL()Verwenden Sie stattdessen NVL().
T-SQL:
SELECT ISNULL(SomeNullableField, 'If null, this value') FROM SomeTable
PL / SQL:
SELECT NVL(SomeNullableField, 'If null, this value') FROM SomeTable
Verwenden Sie auch NVL2wie folgt, wenn Sie einen anderen Wert von Folgendem zurückgeben möchten field_to_check:
NVL2( field_to_check, value_if_NOT_null, value_if_null )
Verwendung: ORACLE / PLSQL: NVL2-FUNKTION
Sie können die Bedingung verwenden if x is not null then.... Es ist keine Funktion. Es gibt auch die NVL()Funktion, ein gutes Beispiel für die Verwendung hier: NVL-Funktionsreferenz .
COALESCEist ANSI, unterstützt von Postgres, MySQL ... Die einzige Einschränkung ist, dass es nicht unbedingt so schnell wie die native Syntax ist.