すべてのプロダクト
Search
ドキュメントセンター

PolarDB:NULL値に関連する関数

最終更新日:Aug 05, 2025

このトピックでは、構文、パラメーター、およびNULL値に関連する関数の例について説明します。

NANVL

説明

この関数は、n1パラメーターの値が数値 (NaN) でないかどうかを判断し、結果を返します。

  • n1パラメーターの値がNaNの場合、関数はn2パラメーターの値を返します。

  • n1パラメーターの値が数値の場合、関数はn1パラメーターの値を返します。

構文

NANVL(n1、n2)

Parameters

パラメーター

説明

n1

このパラメーターの値は、BINARY_FLOATおよびBINARY_DOUBLEデータ型の浮動小数点数のみをサポートします。

n2

このパラメーターの値は、BINARY_FLOATおよびBINARY_DOUBLEデータ型の浮動小数点数のみをサポートします。

戻り値

戻り値は、BINARY_FLOATまたはBINARY_DOUBLEデータ型です。

<bx id="1" type="code" text="code id=" vagfxr "title=" "uuid=" lj3p9k6m4x4je2wunwb "code=" CREATE TABLE float_point_demo (bf BINARY_FLOAT、bd BINARY_DOUBLE);
INSERT INTO float_point_demo VALUES (123.456、'NaN');
INSERT INTO float_point_demo VALUES ('NAN' 、123.456);

SELECT * からfloat_point_demo;
bf | bd
-------- -----------
123.456 | NaN
NaN | 123.456

SELECT NANVL(bf、0) &quot;nanvl_1&quot; 、NANVL(bd、0) &quot;nanvl_2&quot; からfloat_point_demo;
nanvl_1 | nanvl_2
-------- -----------
123.456 | 0
0 | 123.456 "data-tag=" codeblock "outputclass=" language-sql "/>CREATE TABLE float_point_demo (bf BINARY_FLOAT,bd BINARY_DOUBLE);
INSERT INTO float_point_demo VALUES (123.456、'NaN');
INSERT INTO float_point_demo VALUES ('NAN' 、123.456);

SELECT * からfloat_point_demo;
   bf | bd
-------- -----------
 123.456 | NaN
     NaN | 123.456

SELECT NANVL(bf,0) "nanvl_1" 、NANVL(bd,0) "nanvl_2" FROM float_point_demo;
 nanvl_1 | nanvl_2
-------- -----------
 123.456 | 0
       0 | 123.456 

NVL2

説明

この関数は、指定された式がNULLかどうかに基づいて返される値を決定します。

  • expr1パラメーターの値がNULLでない場合、NVL2関数はexpr2パラメーターの値を返します。

  • expr1パラメーターの値がNULLの場合、NVL2関数はexpr3パラメーターの値を返します。

構文

NVL2(expr1, expr2, expr3)

Parameters

パラメーター

説明

expr1

このパラメーターの値は、任意のデータ型にすることができます。

expr2

このパラメーターの値は、LONG以外のデータ型です。

expr3

このパラメーターの値は、LONG以外のデータ型です。

戻り値

  • expr2パラメーターとexpr3パラメーターの値が同じデータ型の場合、同じデータ型の値が返されます。

  • expr2パラメーターとexpr3パラメーターのデータ型が異なる場合、戻り値のデータ型は次の条件で決まります。

    • expr2パラメーターの値が文字データの場合、expr3パラメーターの値がnull定数でない限り、データベースはexpr3パラメーターのデータ型をexpr2パラメーターのデータ型に変換して比較します。 この場合、データ型の変換は必要ありません。 VARCHAR2データ型の値は、expr2パラメーターの文字セットで返されます。

    • expr2パラメーターの値が数値の場合、データベースはどのパラメーターの数値優先度が最も高いかを判断し、他のパラメーターのデータ型を数値優先度が最も高いパラメーターのデータ型に暗黙的に変換してから、変換されたデータ型の値を返します。

<bx id="1" type="code" text="code id=" 0b6774a01f9qd "title=" "uuid=" ljmuue3wfnvvo5k0ghq "code=" select nvl2('A': text、'B' 、'C') DUALから;
nvl2
------
B

nvl2(NULL, 2, 3) DUALから選択します。nvl2
------
3 "data-tag=" codeblock "outputclass=" language-sql ""/>SELECT nvl2('A'::text、'B' 、'C') DUALから;
 nvl2
------
 B

SELECT nvl2(NULL, 2,3) FROM DUAL;
 nvl2
------
    3 

NVL

説明

この関数は、クエリ結果のNULL値を文字列に置き換えます。

  • expr1パラメーターの値がNULLの場合、NVL関数はexpr2パラメーターの値を返します。

  • expr1パラメーターの値がNULLでない場合、NVL関数はexpr1パラメーターの値を返します。

構文

NVL(expr1, expr2)

Parameters

パラメーター

説明

expr1

このパラメーターの値は、任意のデータ型にすることができます。

expr2

このパラメーターの値は、任意のデータ型にすることができます。

戻り値

expr1およびexpr2パラメーターの値は、任意のデータ型にすることができます。

データ型が異なる場合、データベースは暗黙的に一方を他方に変換します。 データ型を暗黙的に変換できない場合、データベースはエラーを返します。

暗黙的なデータ型変換は、次の条件に基づいて実装されます。

expr1パラメーターの値が文字データの場合、データベースは比較前にexpr2パラメーターのデータ型をexpr1パラメーターのデータ型に変換し、expr1パラメーターの文字セットでVARCHAR2データ型の値を返します。

expr1パラメーターの値が数値の場合、データベースはどのパラメーターの数値優先度が最も高いかを判断し、他のパラメーターのデータ型を数値優先度が最も高いパラメーターのデータ型に暗黙的に変換してから、変換されたデータ型の値を返します。

<bx id="1" type="code" text="code id=" 47290b0e1fw21 "title=" "uuid=" ljmuuzytsyjj7wb6kum "code=" select nvl(NULL::text、'B') FROM DUAL;
nvl
-----
B

選択nvl2(NULL::text、'B' 、'C') DUALから;
nvl2
------
C "data-tag=" codeblock "outputclass=" language-sql ""/>SELECT nvl(NULL::text、'B') DUALから;
 nvl
-----
 B 

NULLIF

説明

NULLIF関数は、expr1パラメーターとexpr2パラメーターの値を比較します。

構文

NULLIF(expr1, expr2)

Parameters

パラメーター

説明

expr1

このパラメーターの値は、任意のデータ型にすることができます。

expr2

このパラメーターの値は、任意のデータ型にすることができます。

戻り値

  • expr1パラメーターとexpr2パラメーターの値が同じ場合、関数はNULLを返します。

  • expr1パラメーターとexpr2パラメーターの値が異なる場合、関数はexpr1パラメーターの値を返します。

<bx id="1" type="code" text="code id=" e1ae215b1f82x "title=" "uuid=" ljmuvi2ha2sqzcjhhzw "code=" SELECT nullif('a','') DUAL;
nullif
---------
a

選択nullif('','') FROM DAUL;
nullif
---------
"data-tag=" codeblock "outputclass=" language-sql ""/>SELECT nullif('a','') FROM DUAL;
 nullif
---------
 a

選択nullif('','') FROM DAUL;
 nullif
---------
 

LNNVL

説明

この関数は、1つまたは2つのオペランドがnullの場合に条件を簡潔に評価するために使用します。

説明

この関数は、IS[NOT]NULL、AND、またはor条件が無効であるが、潜在的なNULLオペランドを考慮する必要がある場合でも、スカラー式が発生する限り使用できます。 データベースは、内部でLNNVL関数を使用してNOT IN条件をNOT EXISTS条件に書き換えることがあります。 この場合、EXPLAIN PLANの出力は、スケジュール出力でこのアクションを示します。 スカラー値は、AND、OR、またはBETWEEN条件を含む複雑な条件を除く条件によって計算できます。

構文

LNNVL (条件)

Parameters

パラメーター

説明

condition

入力条件。

戻り値

この関数は、クエリのWHERE句でのみ使用でき、条件をパラメーターとして使用します。

  • 条件がFALSEまたはUNKNOWNの場合、TRUEが返されます。

  • 条件がTRUEの場合、FALSEが返されます。

<bx id="1" type="code" text="code id=" 0224d4691ft8d "title=" "uuid=" ljmuw1qvq99bt6st9a "code=" create table lnnvltbl(name varchar(10) 、id int);
lnnvltbl値 (null、1) に挿入します。lnnvltbl値 (''、2) に挿入します。lnnvltbl値 ('null',3) に挿入します。lnnvltbl値 ('s', 4) に挿入します。lnnvltbl値 ('ss',5) に挿入します。select * from lnnvltbl where lnnvl(name is not null) order by id;
名前 | id
------ -----
| 1
| 2 "data-tag=" codeblock "outputclass=" language-sql ""/> テーブルlnnvltbl(name varchar(10) 、id int) を作成します。lnnvltbl値 (null、1) に挿入します。lnnvltbl値 (''、2) に挿入します。lnnvltbl値 ('null',3) に挿入します。lnnvltbl値 ('s', 4) に挿入します。lnnvltbl値 ('ss',5) に挿入します。select * from lnnvltbl where lnnvl(name is not null) order by id;
 名前 | id
------ -----
      | 1
      | 2 

COALESCE

説明

この関数は、式のリストから最初の非NULL式を返します。 少なくとも1つの式をNULLにすることはできません。 すべてのexprパラメーターの値がNULLの場合、関数はNULLを返します。

データベースは短絡評価を使用する。 つまり、データベースはそれぞれの値を評価します。exprパラメーターを指定し、値がNULLすべての値を評価するのではなくexprパラメータ値の1つがNULL.

構文

COALESCE(expr [, expr]...)

Parameters

パラメーター

説明

expr

このパラメーターの値は、数値または文字のデータ型または式の値です。

戻り値

すべてのexprパラメーターの値が数値データ型または数値データ型に暗黙的に変換できる非数値データ型の場合、データベースはどのパラメーターの数値優先度が最も高いかを判断し、他のパラメーターのデータ型を数値優先度が最も高いパラメーターのデータ型に暗黙的に変換してから、変換されたデータ型の値を返します。

<bx id="1" type="code" text="code id=" a6cec2a61fcsb "title=" "uuid=" ljmuwgvti4j1x5ekuv "code=" SELECT coalesce(null、3.934,1) FROM DUAL;
合体
----------
3.934

select coalesce(null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、合体
----------
1 "data-tag=" codeblock "outputclass=" language-sql ""/>SELECT coalesce(null、3.934,1) FROM DUAL;
 合体
----------
    3.934

select coalesce(null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、
 合体
----------
        1