比較演算子は、パラメーター値を比較するために使用されます。 double、bigint、varchar、timestamp、および date の以下のデータ型の値を比較できます。このトピックでは、比較演算子の構文について説明します。また、比較演算子の使用方法の例も示します。
比較演算子の概要
次の表に、Simple Log Service でサポートされている比較演算子を示します。
演算子 | 構文 | 説明 | SQL でのサポート | SPL でのサポート |
x < y | x が y より小さい場合、true が返されます。 | √ | √ | |
x > y | x が y より大きい場合、true が返されます。 | √ | √ | |
x <= y | x が y 以下の場合、true が返されます。 | √ | √ | |
x >= y | x が y 以上の場合、true が返されます。 | √ | √ | |
x = y | x が y と等しい場合、true が返されます。 | √ | √ | |
x <> y | x が y と等しくない場合、true が返されます。 | √ | √ | |
x != y | x が y と等しくない場合、true が返されます。 | √ | √ | |
x 関係演算子 ALL(サブクエリ) | x がすべての条件を満たす場合、true が返されます。 | √ | × | |
x 関係演算子 ANY(サブクエリ) | x がいずれかの条件を満たす場合、true が返されます。 | √ | × | |
x BETWEEN y AND z | x が y と z の間にある場合、true が返されます。 | √ | √ | |
x IS DISTINCT FROM y | x が y と等しくない場合、true が返されます。 | √ | × | |
x IS NOT DISTINCT FROM y | x が y と等しい場合、true が返されます。 | √ | × | |
x LIKE パターン [escape 'エスケープ文字'] | 文字列内の指定された文字パターンと一致します。文字列は大文字と小文字が区別されます。 | √ | √ | |
x 関係演算子 SOME(サブクエリ) | x がいずれかの条件を満たす場合、true が返されます。 | √ | × | |
GREATEST(x, y...) | x と y の大きい方の値を取得します。 | √ | × | |
LEAST(x, y...) | x と y の小さい方の値を取得します。 | √ | × | |
x IS NULL | x が null の場合、true が返されます。 | √ | √ | |
x IS NOT NULL | x が null でない場合、true が返されます。 | √ | √ |
関係演算子
関係演算子は、x と y を比較します。条件が満たされると、true が返されます。
構文
構文 | 説明 |
x < y | x は y より小さいです。 |
x > y | x は y より大きいです。 |
x <= y | x は y 以下です。 |
x >= y | x は y 以上です。 |
x = y | x は y と等しいです。 |
x <> y | x は y と等しくありません。 |
x != y | x は y と等しくありません。 |
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、比較をサポートするデータ型です。 |
y | このパラメーターの値は、比較をサポートするデータ型です。 |
戻り値の型
ブール型。
例
例 1:前日のログをクエリします。
クエリステートメント
* | SELECT * FROM log WHERE __time__ < to_unixtime(current_date) AND __time__ > to_unixtime(date_add('day', -1, current_date))
クエリと分析結果
例 2:E コマース企業 A は、アクセスログの mobile フィールドと client_ip フィールドを使用して、電話番号がウェブサイトへのアクセスに使用された IP アドレスと異なる場所の顧客を見つけます。
サンプルフィールド
mobile:1881111**** client_ip:192.168.2.0
クエリステートメント
* | SELECT mobile, client_ip, count(*) AS PV WHERE mobile_city(mobile) != ip_to_city(client_ip) AND ip_to_city(client_ip) != '' GROUP BY client_ip, mobile ORDER BY PV DESC
クエリと分析結果
ALL 演算子
ALL 演算子は、x がすべての条件を満たすかどうかを判断します。すべての条件が満たされると、true が返されます。
構文
x 関係演算子 ALL(サブクエリ)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、比較をサポートするデータ型です。 |
関係演算子 | このパラメーターの値は関係演算子です。有効な値:< > <= >= = <> != 重要 ALL 演算子の後には関係演算子が続く必要があります。関係演算子:< > <= >= = <> != |
サブクエリ | このパラメーターの値は SQL サブクエリです。 |
戻り値の型
ブール型。
例
インスタンス i-01 に関連する各リクエストが状態コード 200 で応答されるかどうかを確認します。
サンプルフィールド
instance_id:i-01 status:200
クエリステートメント
* | select 200 = ALL(select status where instance_id='i-01')
クエリと分析結果
ANY 演算子
ANY 演算子は、x がいずれかの条件を満たすかどうかを判断します。いずれかの条件が満たされると、true が返されます。
構文
x 関係演算子 ANY(サブクエリ)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、比較をサポートするデータ型です。 |
関係演算子 | このパラメーターの値は関係演算子です。有効な値:< > <= >= = <> != 重要 ANY 演算子の後には関係演算子が続く必要があります。関係演算子:< > <= >= = <> != |
サブクエリ | このパラメーターの値は SQL サブクエリです。 |
戻り値の型
ブール型。
例
インスタンス i-01 に関連するリクエストが状態コード 200 で応答されるかどうかを確認します。
サンプルフィールド
instance_id:i-01 status:200
クエリステートメント
* | SELECT 200 = ANY(SELECT status WHERE instance_id='i-01')
クエリと分析結果
BETWEEN 演算子
BETWEEN 演算子は、x が y と z の間にあるかどうかを判断します。条件が満たされると、true が返されます。 y と z は閉区間を指定します。
構文
x BETWEEN y AND z
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、比較をサポートするデータ型です。 |
y | このパラメーターの値は、比較をサポートするデータ型です。 |
z | このパラメーターの値は、比較をサポートするデータ型です。 |
x、y、および z のデータ型は同じである必要があります。
x、y、または z の値に null が含まれている場合、null が返されます。
戻り値の型
ブール型。
例
例 1:status フィールドの値が [200, 299] の範囲内にあるかどうかを判断します。
クエリステートメント
* | SELECT status BETWEEN 200 AND 299
クエリと分析結果
例 2:status フィールドの値が [200, 299] の範囲内にないログの数を判断します。
クエリステートメント
* | SELECT count(*) AS count FROM log WHERE status NOT BETWEEN 200 AND 299
クエリと分析結果
DISTINCT 演算子
DISTINCT 演算子は、x が y と等しいかどうかを判断します。
構文
IS DISTINCT FROM:x が y と等しくない場合、true が返されます。
x IS DISTINCT FROM y
IS NOT DISTINCT FROM:x が y と等しい場合、true が返されます。
x IS NOT DISTINCT FROM y
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、比較をサポートするデータ型です。 |
y | このパラメーターの値は、比較をサポートするデータ型です。 |
= 演算子および <> 演算子とは異なり、DISTINCT 演算子を使用して null の比較を実行できます。
x | y | x = y | x <> y | x IS DISTINCT FROM y | x IS NOT DISTINCT FROM y |
1 | 1 | true | false | false | true |
1 | 2 | false | true | true | false |
1 | null | null | null | true | false |
null | null | null | null | false | true |
戻り値の型
ブール型。
例
0 と null を比較します。
クエリステートメント
* | select 0 IS DISTINCT FROM null
クエリと分析結果
LIKE 演算子
LIKE 演算子は、文字列内の指定された文字パターンと一致します。文字列は大文字と小文字が区別されます。
構文
x LIKE パターン [escape 'エスケープ文字']
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、比較をサポートするデータ型です。 |
パターン | このパラメーターの値は文字パターンで、文字列またはワイルドカード文字を含めることができます。次のワイルドカード文字がサポートされています。
|
エスケープ文字 | このパラメーターの値は、文字パターンのワイルドカード文字をエスケープするために使用される文字式です。 |
LIKE 演算子は、完全一致に基づいてログをクエリするために使用されます。詳細については、「完全一致を使用してログをクエリするにはどうすればよいですか?」をご参照ください。
戻り値の型
ブール型。
例
SQL
例 1:request_uri フィールドの値が file-8 または file-6 で終わるログをクエリします。
サンプルフィールド
request_uri:/request/path-2/file-6
クエリステートメント
*|SELECT * WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6'
クエリと分析結果
例 2:request_uri フィールドの値が file-6 で終わるかどうかを確認します。
サンプルフィールド
request_uri:/request/path-2/file-6
クエリステートメント
* | SELECT request_uri LIKE '%file-6'
クエリと分析結果
SPL
例 1:request_uri フィールドの値が file-8 または file-6 で終わるログをクエリします。
サンプルフィールド
request_uri:/request/path-2/file-6
SPL ステートメント
*|WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6'
SPL 結果
例 2:request_uri フィールドの値が file-6 で終わるかどうかを確認します。
サンプルフィールド
request_uri:/request/path-2/file-6
SPL ステートメント
* | extend a = request_uri LIKE '%file-6'
SPL 結果
SOME 演算子
SOME 演算子は、x がいずれかの条件を満たすかどうかを判断します。いずれかの条件が満たされると、true が返されます。
構文
x 関係演算子 SOME(サブクエリ)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、比較をサポートするデータ型です。 |
関係演算子 | このパラメーターの値は関係演算子です。有効な値:< > <= >= = <> != 重要 SOME 演算子の後には関係演算子が続く必要があります。関係演算子:< > <= >= = <> != |
サブクエリ | このパラメーターの値は SQL サブクエリです。 |
戻り値の型
ブール型。
例
インスタンス i-01 に関連するリクエストが 20 秒未満で処理されるかどうかを確認します。
サンプルフィールド
instance_id:i-01 request_time:16
クエリステートメント
* | SELECT 20 > SOME(SELECT request_time WHERE instance_id='i-01')
クエリと分析結果
GREATEST 演算子
GREATEST 演算子は、x と y の大きい方の値を取得します。
GREATEST 演算子は水平比較に使用され、max 関数は垂直比較に使用されます。
構文
GREATEST(x, y...)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、比較をサポートするデータ型です。 |
y | このパラメーターの値は、比較をサポートするデータ型です。 |
戻り値の型
double 型。
例
同じログの request_time フィールドと status フィールドの値を比較して、大きい方の値を取得します。
サンプルフィールド
request_time:38 status:200
クエリステートメント
* | SELECT GREATEST(request_time,status)
クエリと分析結果
LEAST 演算子
LEAST 演算子は、x と y の小さい方の値を取得します。
LEAST 演算子は水平比較に使用され、min 関数は垂直比較に使用されます。
構文
LEAST(x, y...)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、比較をサポートするデータ型です。 |
y | このパラメーターの値は、比較をサポートするデータ型です。 |
戻り値の型
double 型。
例
同じログの request_time フィールドと status フィールドの値を比較して、小さい方の値を取得します。
サンプルフィールド
request_time:77 status:200
クエリステートメント
* | SELECT LEAST(request_time,status)
クエリと分析結果
NULL 演算子
NULL 演算子は、x が null かどうかを判断します。
構文
IS NULL:x が null の場合、true が返されます。
x IS NULL
IS NOT NULL:x が null でない場合、true が返されます。
x IS NOT NULL
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、比較をサポートするデータ型です。 |
戻り値の型
ブール型。
例
例 1:status フィールドの値が null かどうかを判断します。
クエリステートメント
* | select status IS NULL
クエリと分析結果
例 2:status フィールドが空でないログの数を判断します。
クエリステートメント
* | SELECT count(*) AS count FROM log WHERE status IS NOT NULL
クエリと分析結果