case()
case() 関数は条件と値のペアを順番に評価し、最初に真となる条件に対応する値を返します。どの条件も真でない場合、任意で指定したデフォルト値を返します。
構文
case(COND1, VAL1[, COND2, VAL2, ...[, DEFAULT]])
パラメーター
COND1,COND2, ...- 順番に評価する条件式です。ブーリアンの
true、またはnullでない値として評価されると真とみなします。 VAL1,VAL2, ...- 各条件が真のときに返す値の式です。対応する条件とペアになります。
DEFAULT- (任意)すべての条件が偽のときに返すデフォルト値です。引数の総数が奇数の場合、最後の引数がデフォルト値として使用されます。
説明
case() 関数はCOND1、COND2の順に条件を評価します。条件がブーリアンのtrue、またはブーリアン以外のnullでない値であれば真と判定し、対応する値を即座に返します。以降の条件は評価しません。
どの条件も真にならなかった場合、デフォルト値(DEFAULT)が指定されていればデフォルト値を返し、デフォルト値がなければnullを返します。
条件の結果がブーリアンのfalseまたはnullの場合は次の条件に進みます。
返却型は実際に評価された値の式の型によって決まります。値の式の型が異なる場合は自動的に上位型に昇格されます(例:整数と浮動小数点が混在する場合は浮動小数点として返される)。
エラーコード
該当なし
使用例
これらの使用例で参照するWEB_APACHE_SAMPLEテーブルを準備するには、クエリ実習用データを参照してください。
-
HTTPステータスコードの範囲によるラベル分類
table limit=5 WEB_APACHE_SAMPLE | eval label = case(status >= 500, "サーバーエラー", status >= 400, "クライアントエラー", status >= 300, "リダイレクト", "正常") | fields status, label | # status の値に応じて label が決まります。 -
HTTPメソッドによる分類
table limit=5 WEB_APACHE_SAMPLE | eval type = case(method == "GET", "照会", method == "POST", "送信", method == "OPTIONS", "事前確認", "その他") | fields method, type -
どの条件も真でなく、デフォルト値もない場合
json "{'val': 0}" | eval result = case(val == 1, "一", val == 2, "二") | # result: null -
null入力 — 条件評価時にnullは偽として処理され、デフォルト値が返るjson "{'val': null}" | eval result = case(val == 1, "一", "デフォルト値") | # result: デフォルト値
互換性
case() 関数はSonar 4.0以前のバージョンから提供されています。