比較演算子は、パラメータ値を比較するために使用される。 double、bigint、varchar、timestamp、およびdateのデータ型の値を比較できます。 このトピックでは、比較演算子の構文について説明します。 このトピックでは、比較演算子の使用方法の例も示します。
次の表に、Simple Log Serviceでサポートされている比較演算子を示します。
分析ステートメントで文字列を使用する場合は、文字列を単一引用符 (')で囲む必要があります。 二重引用符 (") で囲まれていない、または囲まれている文字列は、フィールド名または列名を示します。 例えば、 'status' はステータスの文字列を示し、status または "status" はステータスログフィールドを示します。
演算子 | 構文 | 説明 | 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 yとzの間 | xがyとzの間にある場合、trueが返されます。 | √ | √ | |
xはyから離れています | xがyと等しくない場合、trueが返されます。 | √ | × | |
xはyから離れていません | xがyに等しい場合、trueが返されます。 | √ | × | |
x LIKEパターン [エスケープ 'escape_character '] | 文字列内の指定された文字パターンと一致します。 文字列は大文字と小文字を区別します。 | √ | √ | |
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: 電子商取引会社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演算子は、xがすべての条件を満たすかどうかを判断します。 すべての条件が満たされると、trueが返されます。
構文
x relational operator ALL(subquery)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、比較をサポートするデータ型です。 |
リレーショナルオペレーター | このパラメーターの値は関係演算子です。 有効な値: < > <= >= = <> ! = 重要 ALL演算子はリレーショナル演算子に従う必要があります。 リレーショナルオペレーター: < > <= >= = <> ! = |
サブクエリ | このパラメーターの値は、SQLサブクエリです。 |
戻り値のデータ型
ブール型。
例
インスタンスi-01に関連する各リクエストがステータスコード200で応答されているかどうかを確認します。
サンプルフィールド
instance_id:i-01 status:200
クエリ文
* | select 200 = ALL(select status where instance_id='i-01')
クエリと分析結果
任意のオペレーター
ANY演算子は、xが条件の1つを満たすかどうかを判断します。 いずれかの条件が満たされると、trueが返されます。
構文
x relational operator ANY(subquery)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、比較をサポートするデータ型です。 |
リレーショナルオペレーター | このパラメーターの値は関係演算子です。 有効な値: < > <= >= = <> ! = 重要 ANY演算子は、リレーショナル演算子に従う必要があります。 リレーショナルオペレーター: < > <= >= = <> ! = |
サブクエリ | このパラメーターの値は、SQLサブクエリです。 |
戻り値のデータ型
ブール型。
例
インスタンスi-01に関連するリクエストにステータスコード200が応答しているかどうかを確認します。
サンプルフィールド
instance_id:i-01 status:200
クエリ文
* | SELECT 200 = ANY(SELECT status WHERE instance_id='i-01')
クエリと分析結果
演算子の間
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から離れていますy | xから離れていない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演算子は、文字列内の指定された文字パターンと一致します。 文字列は大文字と小文字を区別します。
構文
x LIKE pattern [escape 'escape_character']
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、比較をサポートするデータ型です。 |
パターン | このパラメーターの値は文字パターンで、文字列またはワイルドカード文字を含めることができます。 次のワイルドカード文字がサポートされています。
|
escape_character | このパラメーターの値は、文字パターン内のワイルドカード文字をエスケープするために使用される文字式です。 |
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演算子は、xが条件の1つを満たすかどうかを判断します。 いずれかの条件が満たされると、trueが返されます。
構文
x relational operator SOME(subquery)
パラメーター
パラメーター | 説明 |
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 | このパラメーターの値は、比較をサポートするデータ型です。 |
戻り値のデータ型
ダブルタイプ。
例
同じログのrequest_timeフィールドとstatusフィールドの値を比較して、より大きな値を取得します。
サンプルフィールド
request_time:38 status:200
クエリ文
* | SELECT GREATEST(request_time,status)
クエリと分析結果
LEASTオペレーター
LEAST演算子は、xとyの小さい方の値を取得します。
LEAST演算子は水平比較に使用され、min関数は垂直比較に使用されます。
構文
LEAST(x, y...)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、比較をサポートするデータ型です。 |
y | このパラメーターの値は、比較をサポートするデータ型です。 |
戻り値のデータ型
ダブルタイプ。
例
同じログの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
クエリと分析結果