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 テーブルを準備するには、クエリ実習用データを参照してください。
-
ステータスコードが 200 でないかどうかを確認します。
table limit=5 WEB_APACHE_SAMPLE | eval result = not(status == 200) | fields status, result -
GET または POST 以外のリクエストをフィルタリングします。
table limit=5 WEB_APACHE_SAMPLE | search not(in(method, "GET", "POST")) | # GET と POST を除いたリクエストのレコードのみ出力 -
クローラー以外の User-Agent をフィルタリングします。
table limit=5 WEB_APACHE_SAMPLE | eval is_bot = match(agent, "(?i)bot|crawler") | search not(is_bot) | # クローラー以外のリクエストのレコードのみ出力 -
NULL 入力
json "{'val': null}" | eval result = not(val) | # result: null -
数値の0を反転 — 結果は系列によって異なります
json "{'val': 0}" | eval result = not(val) | # 5.0系(5.0.2605.2まで)の結果: null / 4.0系(4.0.2609.0以降)の結果: true5.0系(5.0.2605.2まで)では
EXPRがブーリアン値の場合にのみ真偽を判定するため、ブーリアンでない0は判定対象外となりnullを返します。4.0.2609.0以降では数値の0が偽と判定されるため、その反対のtrueを返します。
変更履歴
| 対象 | 導入リリース |
|---|---|
not() 関数 | Sonar 4.0以前 |
条件判定基準の統一 — 数値0・空文字列などを偽と判定して反転 | 4.0.2609.0 |