回答:
coalesce
Oracleと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でサポートされています...唯一の注意点は、ネイティブ構文ほど高速に実行できるとは限らないことです。