Skip to main content

ISNULL (SQL)

NULL テストを行い、適切な式を返す関数です。

構文

ISNULL(check-expression,replace-expression)

引数

引数 説明
check-expression 評価される式。
replace-expression check-expression が NULL の場合に返される式。

ISNULL が返す値のデータ型は、check-expressionデータ型と同じです。

概要

ISNULLcheck-expression を評価し、2 つの値のうち 1 つを返します。

  • check-expression が NULL の場合は、replace-expression を返します。

  • check-expression が NULL でない場合は、check-expression を返します。

replace-expression のデータ型は、check-expression のデータ型と互換性がある必要があります。

ISNULL 関数は NVL 関数と同じであり、Oracle との互換性のために提供されているという点に注意してください。

NULL の処理方法の詳細は "NULL" を参照してください。

DATE および TIME の表示変換

check-expression のデータ型によっては (DATE、TIME データ型など)、論理モードから ODBC モードまたは表示モードへの変換が必要になります。replace-expression の値が同じデータ型でない場合は、この値を ODBC モードまたは表示モードに変換することはできません。DATE データ型の場合は SQLCODE エラー -146、TIME データ型の場合は SQLCODE エラー -147 が生成されます。例えば、ISNULL(DOB,'nodate') は、ODBC モードまたは表示モードでは実行できません。SQLCODE -146 エラーが発行され、%msg が "エラー : 'nodate' は無効な ODBC/JDBC 日付値です" または "エラー : 'nodate' は無効な表示日付値です" に設定されます。ODBC モードまたは表示モードでこの文を実行するには、値を適切なデータ型 ISNULL(DOB,CAST('nodate' as DATE)) としてキャストする必要があります。これにより日付 0 になり、1840-12-31 として表示されます。

NULL を処理する関数の比較

以下の表は、さまざまな SQL 比較関数を示します。論理比較テストが True (A は B と同じ) の場合、各関数は特定の値を返し、False (A は B と同じではない) の場合、別の値を返します。これらの関数により、NULL の論理比較を実行できます。実際の等値 (または非等値) 条件比較で NULL を指定することはできません。

SQL 関数 比較テスト 返り値
ISNULL(ex1,ex2) ex1 = NULL

True の場合、ex2 を返す

False の場合、ex1 を返す

IFNULL(ex1,ex2) [引数が 2 つの形式] ex1 = NULL

True の場合、ex2 を返す

False の場合、NULL を返す

IFNULL(ex1,ex2,ex3) [引数が 3 つの形式] ex1 = NULL

True の場合、ex2 を返す

False の場合、ex3 を返す

{fn IFNULL(ex1,ex2)} ex1 = NULL

True の場合、ex2 を返す

False の場合、ex1 を返す

NVL(ex1,ex2) ex1 = NULL

True の場合、ex2 を返す

False の場合、ex1 を返す

NULLIF(ex1,ex2) ex1 = ex2

True の場合、NULL を返す

False の場合、ex1 を返す

COALESCE(ex1,ex2,...) 各引数で ex = NULL

True の場合、次の ex 引数をテストすべての ex 引数が True (NULL) の場合、NULL を返す

False の場合、ex を返す

以下の例では、最初の ISNULL は、最初の式が NULL なので、2 番目の式 (99) を返します。2 番目の ISNULL の例は、最初の式が NULL ではないので、最初の式 (33) を返します。

SELECT ISNULL(NULL,99) AS IsNullT,ISNULL(33,99) AS IsNullF

以下の例は、FavoriteColors が NULL の場合は文字列 'No Preference' を返し、そうでない場合は FavoriteColors の値を返します。

SELECT Name,
ISNULL(FavoriteColors,'No Preference') AS ColorChoice
FROM Sample.Person

ISNULL の動作を IFNULL と比較します。

SELECT Name,
IFNULL(FavoriteColors,'No Preference') AS ColorChoice
FROM Sample.Person

関連項目

FeedbackOpens in a new tab