概要:このチュートリアルでは、OracleCOALESCE()
関数を使用して、リスト内の最初の非null引数を返
Oracle COALESCE()関数の概要
OracleCOALESCE()
関数は、引数のリストを受け入れ、null以外の値に評価される最初のものを返します。,
OracleCOALESCE()
関数の構文を次に示します。
この構文では、COALESCE()
関数は、リスト内の最初のnull以外の式を返します。
関数は、リスト内の最初のnull以外の式を返します。
関数は、リスト内の最初のnull以外の式を返します。
関数は、リスト内の最初のnull以外の式を返します。
少なくとも二つの式が必要です。 すべての式がnullと評価された場合、関数はnullを返します。,p>
RESULT---------- 1
次の例では、すべての引数がnullであるためnullを返します。
戻り値の型
すべての引数が同じデータ型である場合、COALESCE()
関数は、そのデータ型の値を返します。
引数のデータ型が異なる場合、COALESCE()
関数は、すべての引数を最初のnull以外の引数のデータ型に暗黙的に変換します。, 変換が失敗した場合、Oracleはエラーを発行します。
次の例では、すべての引数が文字であるため、文字型の値を返します。,
同様に、次の例では数値型の値が返されます。
RESULT---------- 1
ただし、次の例ではCOALESCE()
関数:
oracleは次のエラーを発行しました。
COALESCE()
関数が第三引数の文字型を第二引数の数値型に変換しようとしたため、エラーが発生しました。,
短絡評価
COALESCE()
関数は短絡評価を使用します。 これは、最初の式がnull以外の値に評価されることがわかると、関数が残りの式の評価を停止することを意味します。
次の例を考えてみましょう。
この例では、COALESCE()
関数は最初の式の結果がtwo(1+1)だったため、最初の式のみを評価しました。 これは、第二の式(1/0)を評価しませんでした。 それが行われていた場合、Oracleはゼロによる除算エラーを発行していたでしょう。,
Oracle COALESCE()の例
テスト用のサンプル表をセットアップしましょう。
仕事の電話、自宅の電話、携帯電話など、さまざまな電話番号で従業員の緊急連絡先を記録する必要があるとします。 これを行うには、次のようにemergency_contacts
という名前の新しいテーブルを作成します。
次のステートメントは、いくつかの緊急連絡先をテーブルに挿入します。
一部の連絡先は職場の電話のみを持ち、他の連絡先は自宅の電話と携帯電話を持っているか、電話番号をまったく持っていないかもしれません。,
この例では、COALESCE()
関数を使用して、自宅の電話、職場の電話、または携帯電話が利用可能な場合はそれぞれを選択しました。
次のクエリは、従業員とその緊急連絡先を電話番号で取得します。
この例では、COALESCE()
電話番号が利用できない場合は、N/A
not availableを表すリテラル文字列を返しました。,
クエリの結果は次のとおりです。
Oracle COALESCE()およびCASE式
COALESCE()
長いiv id=””の代わりに、関数を使用できます。9d8378d864″>
複数の式でnullをテストする場合の式。 COALESCE()
関数は、null評価を含むCASE
式よりも簡潔です。,
If you check for NULL in two expressions, the COALESCE()
function is equivalent to the CASE
expression.
For example, the following COALESCE()
function:
is equivalent to:
Likewise,
is equivalent to
Oracle COALESCE() vs. NVL()
The COALESCE()
function is a part of SQL ANSI-92 standard while NVL()
function is Oracle specific.,
二つの式の場合、COALESCE()
関数とNVL()
似ているように見えますが、それらの実装は異なります。 次のステートメントを参照してください。
どちらのステートメントも同じ結果を返します。 ただし、COALESCE()
関数は結果を決定するために最初の式のみを評価し、NVL()
関数は両方の式を評価します。,
次の例を見てみましょう。
上記のステートメントは1を返しましたが、次の例ではエラーが発生します。
エラーは次のとおりです。
NVL()
関数エラーの原因となる第二の式1/0
を評価しました。
このチュートリアルでは、OracleのCOALESCE()
関数を使用して、式のリスト内の最初のnull以外の式を返す方法を学習しました。/p>
- このチュートリアルは役に立ちましたか?,
- イェスノ