PostgreSQLにおいて、COALESCE関数は最初の非NULLの引数を返します。 これは一般的にNULL値を効果的に扱うためにSELECT文とともに使用されます。

Syntax: COALESCE (argument_1, argument_2, …);

COALESCE関数は無制限の数の引数を受け付けます。 それは、NULLでない最初の引数を返します。 すべての引数がNULLの場合、COALESCE関数はNULLを返します。 COALESCE関数は、最初の非NULL引数を見つけるまで左から右へ引数を評価します。

例:
デモのために、まず以下のステートメントを使用してテーブル (たとえば、items) を作成します:

CREATE TABLE items ( ID serial PRIMARY KEY, product VARCHAR (100) NOT NULL, price NUMERIC NOT NULL, discount NUMERIC);

items table には 4 つのフィールドがあります:

  • id: items テーブルでアイテムを特定する主キーです。
  • product:商品名.
  • price:商品の価格.
  • 価格:商品の価格.
  • 価格:商品の価格.
  • discount: 商品の割引額。

ここで、次のようにINSERT文を使用してitems テーブルにいくつかのレコードを挿入します:

INSERT INTO items (product, price, discount)VALUES ('A', 1000, 10), ('B', 1500, 20), ('C', 800, 5), ('D', 500, NULL);

最後に、次の使用して製品の純価格を照会します:

SELECT product, (price - discount) AS net_priceFROM items;

この結果、次のことがわかります:

第4行を見れば、製品Dの純価格が正しくないと考えられるヌルに気づくでしょう。 この問題は、製品Dの割引がNULLであるため、NULL値を取って正価を計算すると、PostgreSQLはNULLを返します。 正しい価格を得るには、割引がNULLの場合、それはゼロであると仮定する必要があります。 次に、次のようにCOALESCE関数を使用することができます:

SELECT product, (price - COALESCE(discount, 0)) AS net_priceFROM items;

出力:

記事タグ:

admin

コメントを残す

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

lg