このトピックでは、構文、パラメーター、およびNULL値に関連する関数の例について説明します。
NANVL
説明
この関数は、n1パラメーターの値が数値 (NaN) でないかどうかを判断し、結果を返します。
n1パラメーターの値がNaNの場合、関数はn2パラメーターの値を返します。n1パラメーターの値が数値の場合、関数はn1パラメーターの値を返します。
構文
NANVL(n1、n2)Parameters
パラメーター | 説明 |
n1 | このパラメーターの値は、 |
n2 | このパラメーターの値は、 |
戻り値
戻り値は、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) "nanvl_1" 、NANVL(bd、0) "nanvl_2" から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 | このパラメーターの値は、 |
expr3 | このパラメーターの値は、 |
戻り値
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