not()

not() 関数は、式の真偽を判定し、その論理否定(NOT)を返します。

構文

not(EXPR)

パラメータ

EXPR
真偽を判定する式です。真と判定される基準は系列によって異なります。5.0系(5.0.2605.2まで)ではブーリアン値のみを真偽判定の対象とし、数値や文字列などブーリアンでもnullでもない値は判定対象外としてnullを返します。4.0.2609.0以降では、ブールの false、数値の 0 や NaN、空文字列、空のリスト・配列・マップは偽と判定し、それ以外の値は真と判定します。いずれの系列でも null は真偽判定の対象外で、そのまま返されます。

説明

not() 関数は EXPR を評価して真偽を判定し、その結果を反転して返します。真と判定された場合は false を返します。偽と判定された場合は true を返します。4.0.2609.0以降では、例えば not(0) は true を、not(5) は false を、not("") は true を返します。5.0系(5.0.2605.2まで)ではこれらのようなブーリアンでもnullでもない値は真偽判定の対象外となるため、not() はいずれの場合も代わりにnullを返します。

EXPR が null の場合は真偽を判定せず、null をそのまま返します。

戻り値の型は常にブールまたは null です。

エラーコード

該当なし

使用例

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

  1. ステータスコードが 200 でないかどうかを確認します。

    table limit=5 WEB_APACHE_SAMPLE | eval result = not(status == 200) | fields status, result
    
  2. GET または POST 以外のリクエストをフィルタリングします。

    table limit=5 WEB_APACHE_SAMPLE | search not(in(method, "GET", "POST"))
    | # GET と POST を除いたリクエストのレコードのみ出力
    
  3. クローラー以外の User-Agent をフィルタリングします。

    table limit=5 WEB_APACHE_SAMPLE | eval is_bot = match(agent, "(?i)bot|crawler") | search not(is_bot)
    | # クローラー以外のリクエストのレコードのみ出力
    
  4. NULL 入力

    json "{'val': null}" | eval result = not(val)
    | # result: null
    
  5. 数値の0を反転 — 結果は系列によって異なります

    json "{'val': 0}" | eval result = not(val)
    | # 5.0系(5.0.2605.2まで)の結果: null / 4.0系(4.0.2609.0以降)の結果: true
    

    5.0系(5.0.2605.2まで)ではEXPRがブーリアン値の場合にのみ真偽を判定するため、ブーリアンでない0は判定対象外となりnullを返します。4.0.2609.0以降では数値の0が偽と判定されるため、その反対のtrueを返します。

変更履歴

対象導入リリース
not() 関数Sonar 4.0以前
条件判定基準の統一 — 数値0・空文字列などを偽と判定して反転4.0.2609.0