Antworten:
coalesce
wird sowohl in Oracle als auch in SQL Server unterstützt und hat im Wesentlichen dieselbe Funktion wie nvl
und isnull
. (Es gibt einige wichtige Unterschiede, coalesce
die eine beliebige Anzahl von Argumenten annehmen können und das erste Nicht-Null-Argument zurückgeben. Der Rückgabetyp für isnull
stimmt mit dem Typ des ersten Arguments überein, der coalesce
zumindest unter SQL Server nicht zutrifft .)
COALESCE
, was einen wichtigen Vorteil gegenüber hat NVL
: Es führt eine Verknüpfungsbewertung durch, während NVL
immer 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 NVL2
wie 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 .
COALESCE
ist ANSI, unterstützt von Postgres, MySQL ... Die einzige Einschränkung ist, dass es nicht unbedingt so schnell wie die native Syntax ist.