説明
この関数は、2つの式から非NULL値を返します。expr1 と expr2 の両方の結果がNULL値である場合、NVL 関数は NULL を返します。
構文
NVL(expr1, expr2)
パラメータの説明
| パラメータ | 説明 |
|---|---|
| expr1 | 最初のパラメータを指定します。データ型は、データベースの組み込みデータ型のいずれかにすることができます。 |
| expr2 | 2 番目のパラメータを指定します。データ型は、データベースの組み込みデータ型のいずれかにすることができます。 |
説明
expr1 と expr2 は同じ型であるか、暗黙的に同じ型に変換できる必要があります。それらが暗黙的に変換できない場合、データベースはエラーを返します。暗黙的な変換ルールは以下のとおりです:
expr1がCHAR、NCHAR、NVARCHAR、VARCHAR2、またはVARCHAR文字データ型である場合、データベースはexpr1を比較する前にexpr2をexpr1のデータ型に変換し、expr1文字セットのVARCHAR2を返します。expr1がNUMBER、FLOAT、BINARY_FLOAT、またはBINARY_DOUBLE数値データ型である場合、データベースはどちらのパラメータが最も高い数値優先順位を持つかを決定し、もう一方のパラメータをそのデータ型に暗黙的に変換して返します。
戻り値のタイプ
expr1とexpr2がNULLの場合、NULLを返します。expr1が文字データ型CHAR、NCHAR、NVARCHAR、VARCHAR2、またはVARCHARに属する場合、expr1文字セットのVARCHAR2を返します。expr1が数値データ型NUMBER、FLOAT、BINARY_FLOAT、またはBINARY_DOUBLEに属する場合、expr1内で最も優先順位の高いデータ型を返します。
例
テーブル tbl1 を作成し、5件のデータを挿入します。そして、列 col2 内のNULL値を 100 で置き換えます。
obclient> CREATE TABLE tbl1 (col1 INT,col2 INT);
Query OK, 0 rows affected
obclient> INSERT INTO tbl1 VALUES (1,30),(2,null),(3,50),(4,80),(5,10);
Query OK, 5 rows affected
Records: 5 Duplicates: 0 Warnings: 0
obclient> SELECT col1,NVL(col2,100) FROM tbl1;
+------+---------------+
| COL1 | NVL(COL2,100) |
+------+---------------+
| 1 | 30 |
| 2 | 100 |
| 3 | 50 |
| 4 | 80 |
| 5 | 10 |
+------+---------------+
5 rows in set