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;
出力:
記事タグ: