Réponses:
coalesce
est pris en charge dans Oracle et SQL Server et remplit essentiellement la même fonction que nvl
et isnull
. (Il existe des différences importantes, coalesce
peut prendre un nombre arbitraire d'arguments et renvoie le premier non nul. Le type de retour pour isnull
correspond au type du premier argument, ce qui n'est pas vrai pour coalesce
, du moins sur SQL Server.)
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)
.
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"
.
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
Utilisez également NVL2
comme 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
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 .
COALESCE
est ANSI, supporté par Postgres, MySQL ... La seule mise en garde est qu'il ne fonctionne pas forcément aussi vite que la syntaxe native.