説明
この関数は、入力された式 expr1 が空かどうかに基づいて、異なる値を返します。
expr1が空でない場合、expr2の値を返します。expr1が空の場合、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のデータ型が異なる場合、データベースはそのうちの1つをもう一方に暗黙的に変換します。それらが暗黙的に変換できない場合、データベースはエラーを返します。expr2が文字列型または数値型の場合、暗黙的変換ルールは次のとおりです:expr2がCHAR、NCHAR、NVARCHAR、VARCHAR2、またはVARCHAR文字列データの場合、OceanBaseデータベースはまずexpr3をexpr2のデータ型に変換してから値を返します。expr3がNULLの場合、データ型の変換は不要であり、結果はVARCHAR2タイプとして返されます。expr2がNUMBER、FLOAT、BINARY_FLOAT、またはBINARY_DOUBL数値型の場合、OceanBaseデータベースはどのパラメータが最も高い数値優先順位を持つかを決定し、もう一方のパラメータをそのデータ型に暗黙的に変換して返します。
例
テーブル tbl1 を作成し、5件のデータを挿入します。そして、列 col2 内の空の値を 100 に、空ではない値を 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