回答:
coalesceOracleとSQL Serverの両方でサポートされており、およびと基本的に同じ機能を提供nvlしisnullます。(いくつかの重要な違いがありcoalesce、任意の数の引数を取り、最初のnull以外の引数を返すことができます。の戻り値の型isnullは最初の引数の型と一致しcoalesceます。少なくともSQL Serverではには当てはまりません。)
COALESCEには、1つ以上の重要な利点がありNVLます。これは、ショートカット評価を行うのに対し、NVL常に両方のパラメーターを評価します。と比較COALESCE(1,my_expensive_function)してくださいNVL(1,my_expensive_function)。
COALESE()関数はすばらしいものであり、MSDOC> COALESCEで読むことができます。これと同じ構文がOracleでも機能します。データにNULLSではなく空の文字列がある場合は、次のようなものが必要になる可能性がありますCOALESCE(TRIM(Tbl.myField1), TRIM(Tbl.myField2)) AS "myNewField"。
の代わりにISNULL()、を使用してくださいNVL()。
T-SQL:
SELECT ISNULL(SomeNullableField, 'If null, this value') FROM SomeTable
PL / SQL:
SELECT NVL(SomeNullableField, 'If null, this value') FROM SomeTable
NVL2から他の値を返したい場合も以下のように使用しますfield_to_check:
NVL2( field_to_check, value_if_NOT_null, value_if_null )
条件を使用できますif x is not null then...。関数ではありません。このNVL()関数の使用例もここにあります。NVL関数refです。
COALESCEはANSIであり、Postgres、MySQLでサポートされています...唯一の注意点は、ネイティブ構文ほど高速に実行できるとは限らないことです。