SQL coalesce 値がNULLの場合の代替値を返す 簡易版のNVLやNULLIFが使えるDBもあり
  • facebookページ
  • twitterページ
  • 2020.03.23

    SQL coalesce 値がNULLの場合の代替値を返す 簡易版のNVLやNULLIFが使えるDBもあり

    SQLのcoalesce関数についてまとめています。

    coalesceは、NULLの代替値を取得する関数です。データベースごとに多少の差異があります。

    Coalesce関数の構文

    coalesce関数は、対象の値がNULLだった場合、代替として使う値を返す関数です。下記の書式では、対象の値がNULLだった場合、代わりに評価する値をカンマで区切って指定します。

    MySQLのcoaleceのサンプルSQL

    MySQLで、coalesceの動きを確認してみましょう。

    指定した値を順番に評価し、NULL以外の値を返します。全てNULLだった場合は、NULLを返します。

    以下のSQLは、salaries(年収)テーブルから、birth_date(誕生日)の年ごとにsalary(年収)の合計を出力します。salaryの値がNULLの場合は、coalesceで0に置き換えています。

    実行結果はこうなります。

    【関連記事】
    MySQLのNULL判定はどうやる? 除外判定やNULLのSUMを取得するには?

    OracleのcoalesceのサンプルSQL

    以下のSQLは、product_informationテーブルから、supplier_id=102050のデータのproduct_id、list_price、min_price、Saleを取得します。Saleの値は、0.9*list_price、min_price、5のうちNULLでないものが表示されます。

    関連)OracleのCOALESCE

    なお、Oracleには引数2つのみで簡易的に使えるNVL関数も用意されています。

    SQL Serverのcoalesce CASEで置き換える例

    以下のSQLは、Production.Productテーブルから、Name,Class,Color、ProductNumber、FirstNotNullを取得します。FirstNotNullには、Class,Color、ProductNumberのうち、NULLではない値が表示されます。

    参考)COALESCE (Transact-SQL) – SQL Server | Microsoft Docs

    coalesceは、CASEで置き換えることも可能です。

    PostgreSQL coalesceのほかに、NULLIF関数あり

    参考)PostgreSQLの条件式

    PostgreSQLには、NULLIFという関数が用意されています。

    下記のように記述すると、value1が(none)の場合にNULL、そうでなければvalue1を返します。

    まとめ

    ポテパンダの一言メモ
    • coalsceは、指定した値がNULLだった場合、代替の値を返す関数。
    • 指定した値が全てNULLだった場合は、NULLを返す。
    • データベースによっては、OracleのNVLや、PostgreSQLのNULLIFなど簡易的なcoalsceとして使える関数が用意されている。


    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE