説明
この関数は、入力された式 expr1 がNULLかどうかに基づいて、異なる値を返します。
expr1がNULLではない場合、expr2の値を返します。expr1がNULLの場合、expr3の値を返します。
構文
NVL2(expr1, expr2, expr3)
パラメータの説明
パラメータ |
説明 |
|---|---|
| expr1 | 最初のパラメータを指定します。データ型は、データベースの組み込みデータ型のいずれかにすることができます。 |
| expr2 | 2番目のパラメータを指定します。データ型は、データベースの組み込みデータ型のいずれかにすることができます。 |
| expr3 | 3番目のパラメータを指定します。データ型は、データベースの組み込みデータ型のいずれかにすることができます。 |
戻り値のタイプ
expr1がNULL値の場合、expr3もNULL値の場合はNULLを返します。expr3がNULL値でない場合は、返り値のタイプについては以下の 説明 を参照してください。expr1がNULL値でない場合、expr2がNULL値の場合はNULLを返します。expr2がNULL値でない場合は、返り値のタイプについては以下の 説明 を参照してください。説明
expr2とexpr3のデータ型が異なる場合、データベースはそのうちの一方をもう一方へ暗黙的に変換します。それらが暗黙的に変換できない場合、データベースはエラーを返します。expr2が文字型または数値型の場合、暗黙的変換のルールは以下のとおりです:expr2がCHAR、NCHAR、NVARCHAR、VARCHAR2またはVARCHAR文字データの場合、OceanBaseデータベースはまずexpr3をexpr2のデータ型に変換してから値を返します。expr3がNULLの場合は、データ型変換は不要で、結果はVARCHAR2型を返します。expr2がNUMBER、FLOAT、BINARY_FLOATまたはBINARY_DOUBL数値型の場合、OceanBaseデータベースはどちらのパラメータが最も高い数値優先順位を持つかを判断し、もう一方のパラメータをそのデータ型に暗黙的に変換して返します。
例
テーブル tbl1 を作成し、5件のデータを挿入します。そして、列 col2 のNULL値を 100 に、NULLでない値を 50 に置き換えます。
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,NVL2(col2,50,100) FROM tbl1;
+------+-------------------+
| COL1 | NVL2(COL2,50,100) |
+------+-------------------+
| 1 | 50 |
| 2 | 100 |
| 3 | 50 |
| 4 | 50 |
| 5 | 50 |
+------+-------------------+
5 rows in set