Maybaygiare.org

Blog Network

PostgreSQLでCOALESCEを使用する方法

概要:この記事では、COALESCE関数を使用してPostgreSQLでNULL値を処理する方法について説明します。 例で議論されているトピックは次のとおりです。

1。 COALESCE関数とは何ですか?いくつかの注意点

2。 この記事では、COALESCE関数とは何か、そしてPostgreSQLでそれを使用する方法を理解します。

合体関数とは何ですか? COALESCEは、PostgreSQLで利用可能な条件式の1つと考えることができるシステム組み込み関数です。 Nullif、GREATEST、LEAST、COALESCEはPostgreSQLの条件式のタイプです。

COALESCE関数は、指定されたリスト内の最初のNULL以外の式を返します。 すべての引数がNULLの場合、出力としてNULLが返されます。

サポートされている構文は次のとおりです。

COALESCE(value_1,value_2,value_3,........value_n)

パラメータまたは引数は次のとおりです。

value_1,value_2,value_3,........value_n

注意点

COALESCE関数に関するいくつかのポイント:

  • パラメータはNULL以外の値に対してテストされています。
  • パラメータはすべて同じデータ型でなければなりません。 それ以外の場合はエラーになります。
  • COALESCE関数は、引数の数に制限はありません。
  • 左から右へ引数を取ります。
  • Coalesce関数は、他のDBMSで利用可能なNVLやIFNULLのような同様の互換性を提供します。CASEとCOALESCEは同様の目的で使用できますが、COALESCEを使用する利点は、入力がはるかに少ないことです。
  • 最初のNULL以外の値に達するとすぐにパラメータの評価を停止します。

1. ここでは、最初のパラメータのNULL以外の値でCOALESCEがどのように動作するかを示します。

postgres=# select coalesce (1,null,2); coalesce ---------- 1(1 row)

COALESCE関数は、最初のNULL以外の式を検索するため、残りのパ

2. NULL値が最初のパラメータである場合のCOALESCEの動作は次のとおりです。

postgres=# select coalesce (null,1,2); coalesce ---------- 1(1 row)

COALESCE関数は最初のパラメータでNULL値を見つけたので、NULLではない第二のパラ

3. 複数のNULL値を解釈する方法は次のとおりです。

postgres=# SELECT coalesce(null,null, 1, 2, 3, null, 4); coalesce ---------- 1(1 row)

この式には複数のNullがありますが、3番目のパラメータで最初のNULL以外の値に達

4. パラメータのデータ型が一致しない場合、エラーが発生します。

postgres=# SELECT coalesce(1,now(),null);ERROR: COALESCE types integer and timestamp with time zone cannot be matched

最初のパラメータは整数で、now()関数はタイムゾーン付きのタイムスタンプを返 これらのパラメータは同じ型ではないため、関数のシグネチャは無効であるため、生成およびエラーが発生します。

5. 他の関数をCOALESCE関数内のパラメータとして使用できます。

postgres=# SELECT coalesce(nvl(null,199),least(8,null),avg(9.9)); coalesce ---------- 199(1 row)

COALESCEを使用したNULL値の防止

COALESCE関数の有用な適用は、クエリ結果にNULL値が表示されないようにすることです。

1. CREATE TABLEコマンドを使用してテーブル”sales”を作成します。

postgres=# CREATE TABLE sales (serial_id int primary key, product_name varchar(50), amount numeric, discount numeric); CREATE TABLE

2. テーブル”sales”にデータを挿入します。

postgres=# INSERT INTO sales VALUES (121,'paste',1000,10), (144,'brush',1500,20), (166,'soap',800,0), (178,'coffee',500,NULL);INSERT 0 4

3。 「金額」列の値から「割引」列の値を減算しようとすると、最後の行はNULL値を返します。 これは、NULL値に対して実行される算術演算がNULLになるためです。p>

postgres=# SELECT amount - discount as "final bill" FROM sales; final bill ------------ 990 1480 800 <=Null(4 rows)

コメントを残す

メールアドレスが公開されることはありません。