Was ist das Oracle-Äquivalent zur IsNull () - Funktion von SQL Server?

Antworten:

131

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 .)

Shannon Severance
quelle
9
+1: COALESCEist ANSI, unterstützt von Postgres, MySQL ... Die einzige Einschränkung ist, dass es nicht unbedingt so schnell wie die native Syntax ist.
OMG Ponys
17
+1 für 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).
Jeffrey Kemp
Diese 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".
SherlockSpreadsheets
108

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
BoltClock
quelle
2
Beantwortet die Frage explizit.
Gary Huckabone
31

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

MinhD
quelle
7

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 .

FrustratedWithFormsDesigner
quelle