Quel est l'équivalent Oracle de la fonction IsNull () de SQL Server?

Réponses:

131

coalesceest pris en charge dans Oracle et SQL Server et remplit essentiellement la même fonction que nvlet isnull. (Il existe des différences importantes, coalescepeut prendre un nombre arbitraire d'arguments et renvoie le premier non nul. Le type de retour pour isnullcorrespond au type du premier argument, ce qui n'est pas vrai pour coalesce, du moins sur SQL Server.)

Indemnité de Shannon
la source
9
+1: COALESCEest ANSI, supporté par Postgres, MySQL ... La seule mise en garde est qu'il ne fonctionne pas forcément aussi vite que la syntaxe native.
OMG Ponies
17
+1 pour COALESCE, ce qui présente un avantage important NVL: il évalue les raccourcis, alors qu'il NVLévalue toujours les deux paramètres. Comparez COALESCE(1,my_expensive_function)avec NVL(1,my_expensive_function).
Jeffrey Kemp
Cette COALESE()fonction est géniale et vous pouvez en savoir plus sur MSDOC> COALESCE - cette même syntaxe fonctionne sur Oracle. Si vos données ont des chaînes vides au lieu de NULLS vous pourriez avoir besoin quelque chose comme ceci: COALESCE(TRIM(Tbl.myField1), TRIM(Tbl.myField2)) AS "myNewField".
SherlockSpreadsheets
108

Au lieu de ISNULL(), utilisez NVL().

T-SQL:

SELECT ISNULL(SomeNullableField, 'If null, this value') FROM SomeTable

PL / SQL:

SELECT NVL(SomeNullableField, 'If null, this value') FROM SomeTable
BoltClock
la source
2
Répond explicitement à la question.
Gary Huckabone
31

Utilisez également NVL2comme ci-dessous si vous souhaitez renvoyer une autre valeur à partir de field_to_check:

NVL2( field_to_check, value_if_NOT_null, value_if_null )

Utilisation: ORACLE / PLSQL: FONCTION NVL2

MinhD
la source
7

Vous pouvez utiliser la condition if x is not null then.... Ce n'est pas une fonction. Il y a aussi la NVL()fonction, un bon exemple d'utilisation ici: la fonction NVL réf .

FrustréWithFormsDesigner
la source