case()

case() 関数は条件と値のペアを順番に評価し、最初に真となる条件に対応する値を返します。どの条件も真でない場合、任意で指定したデフォルト値を返します。

構文

case(COND1, VAL1[, COND2, VAL2, ...[, DEFAULT]])

パラメーター

COND1, COND2, ...
順番に評価する条件式です。ブーリアンのtrue、またはnullでない値として評価されると真とみなします。
VAL1, VAL2, ...
各条件が真のときに返す値の式です。対応する条件とペアになります。
DEFAULT
(任意)すべての条件が偽のときに返すデフォルト値です。引数の総数が奇数の場合、最後の引数がデフォルト値として使用されます。

説明

case() 関数はCOND1COND2の順に条件を評価します。条件がブーリアンのtrue、またはブーリアン以外のnullでない値であれば真と判定し、対応する値を即座に返します。以降の条件は評価しません。

どの条件も真にならなかった場合、デフォルト値(DEFAULT)が指定されていればデフォルト値を返し、デフォルト値がなければnullを返します。

条件の結果がブーリアンのfalseまたはnullの場合は次の条件に進みます。

返却型は実際に評価された値の式の型によって決まります。値の式の型が異なる場合は自動的に上位型に昇格されます(例:整数と浮動小数点が混在する場合は浮動小数点として返される)。

エラーコード

該当なし

使用例

これらの使用例で参照するWEB_APACHE_SAMPLEテーブルを準備するには、クエリ実習用データを参照してください。

  1. HTTPステータスコードの範囲によるラベル分類

    table limit=5 WEB_APACHE_SAMPLE
    | eval label = case(status >= 500, "サーバーエラー", status >= 400, "クライアントエラー", status >= 300, "リダイレクト", "正常")
    | fields status, label
    | # status の値に応じて label が決まります。
    
  2. HTTPメソッドによる分類

    table limit=5 WEB_APACHE_SAMPLE
    | eval type = case(method == "GET", "照会", method == "POST", "送信", method == "OPTIONS", "事前確認", "その他")
    | fields method, type
    
  3. どの条件も真でなく、デフォルト値もない場合

    json "{'val': 0}" | eval result = case(val == 1, "一", val == 2, "二")
    | # result: null
    
  4. null入力 — 条件評価時にnullは偽として処理され、デフォルト値が返る

    json "{'val': null}" | eval result = case(val == 1, "一", "デフォルト値")
    | # result: デフォルト値
    

互換性

case() 関数はSonar 4.0以前のバージョンから提供されています。