Les opérateurs de comparaison comparent les valeurs de paramètres pour des types de données comparables tels que double, bigint, varchar, timestamp et date. Cette rubrique décrit leur syntaxe et fournit des exemples.
Opérateurs de comparaison
Log Service prend en charge les opérateurs de comparaison suivants.
Si vous souhaitez utiliser des chaînes de caractères dans les instructions d'analyse, vous devez les entourer de guillemets simples (''). Les chaînes non entourées de guillemets ou entourées de guillemets doubles ("") indiquent des noms de champs ou de colonnes. Par exemple,
'status'
indique la chaîne de caractères « status », tandis que
status
ou
"status"
indique le champ de journal « status ».
|
Opérateur |
Syntaxe |
Description |
SQL |
SPL |
|
x < y |
Renvoie true si x est inférieur à y. |
√ |
√ |
|
|
x > y |
Renvoie true si x est supérieur à y. |
√ |
√ |
|
|
x <= y |
Renvoie true si x est inférieur ou égal à y. |
√ |
√ |
|
|
x >= y |
Renvoie true si x est supérieur ou égal à y. |
√ |
√ |
|
|
x = y |
Renvoie true si x est égal à y. |
√ |
√ |
|
|
x <> y |
Renvoie true si x n'est pas égal à y. |
√ |
√ |
|
|
x != y |
Renvoie true si x n'est pas égal à y. |
√ |
√ |
|
|
x opérateur relationnel ALL(sous-requête) |
Renvoie true lorsque x satisfait toutes les conditions. |
√ |
× |
|
|
x opérateur relationnel ANY(sous-requête) |
Renvoie true si x remplit l'une des conditions. |
√ |
× |
|
|
x BETWEEN y AND z |
Renvoie true si x se situe entre y et z, bornes incluses. |
√ |
√ |
|
|
x IS DISTINCT FROM y |
Renvoie true si x n'est pas égal à y. Contrairement à l'opérateur <>, cet opérateur renvoie false si x et y sont tous deux NULL. |
√ |
× |
|
|
x IS NOT DISTINCT FROM y |
Renvoie true si x est égal à y. Contrairement à l'opérateur =, cet opérateur renvoie true si x et y sont tous deux NULL. |
√ |
× |
|
|
x LIKE modèle [escape 'caractère_d'échappement'] |
Vérifie si une chaîne correspond au modèle spécifié. Cette opération respecte la casse. |
√ |
√ |
|
|
x opérateur relationnel SOME(sous-requête) |
Renvoie true si x satisfait au moins une condition. |
√ |
× |
|
|
GREATEST(x, y...) |
Trouve la valeur maximale entre x et y. |
√ |
× |
|
|
LEAST(x, y...) |
Trouve la valeur minimale entre x et y. |
√ |
× |
|
|
x IS NULL |
Renvoie true si x est NULL. |
√ |
√ |
|
|
x IS NOT NULL |
Renvoie true si x n'est pas NULL. |
√ |
√ |
Opérateurs relationnels
Les opérateurs relationnels comparent les valeurs de x et de y. Un opérateur renvoie true si sa condition est remplie.
-
Syntaxe
Syntax
Description
x < y
Renvoie true si x est inférieur à y.
x > y
Renvoie true si x est supérieur à y.
x <= y
Renvoie true si x est inférieur ou égal à y.
x >= y
Renvoie true si x est supérieur ou égal à y.
x = y
Renvoie true si x est égal à y.
x <> y
Renvoie true si x est différent de y.
x != y
Renvoie true si x est différent de y.
-
Paramètres
Parameter
Description
x
Une expression de tout type de données comparable.
y
Une expression de tout type de données comparable.
-
Type de valeur de retour
boolean
-
Exemples
-
Exemple 1 : interrogez les journaux de la veille.
-
Instruction de requête
* | SELECT * FROM log WHERE __time__ < to_unixtime(current_date) AND __time__ > to_unixtime(date_add('day', -1, current_date)) Résultats de la requête : la requête renvoie plusieurs champs de journal, notamment
body_bytes_sent,client_ip,host,http_user_agent,http_x_forwarded_for,instance_id,instance_name,network_type,owner_idetreferer. Ces champs fournissent des détails pour chaque enregistrement d'accès, tels que la taille du corps de la requête, l'adresse IP du client, le nom de domaine accédé, le User-Agent, l'ID d'instance, le nom de l'instance et le type de réseau.
-
-
Exemple 2 : pour identifier les clients dont l'emplacement géographique associé au numéro de téléphone diffère de celui de leur adresse IP d'accès, une entreprise de commerce électronique interroge les champs mobile et client_ip dans ses journaux d'accès.
-
Valeurs de champ exemples
mobile:1881111**** client_ip:192.168.2.0 -
Instruction de requête
* | 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 Résultats de la requête : la requête renvoie deux enregistrements. Les informations sensibles des colonnes
mobileetclient_ipsont masquées. Les valeursPVcorrespondantes sont 13 et 12.
-
-
Opérateur ALL
L'opérateur ALL compare une valeur, x, à toutes les valeurs de l'ensemble de résultats d'une sous-requête. Il renvoie true si la comparaison est vraie pour chaque valeur de l'ensemble.
-
Syntaxe
x relational operator ALL(subquery) -
Paramètres
Parameter
Description
x
Une valeur de tout type de données comparable.
comparison operator
<, >, <=, >=, =, <>, !=
ImportantL'opérateur ALL doit suivre immédiatement un opérateur de base (<, >, <=, >=, =, <>, !=).
subquery
Une sous-requête SQL.
-
Type de valeur de retour
Type boolean.
-
Exemples
Cet exemple vérifie si toutes les requêtes pour l'instance « i-01 » possèdent un code d'état 200.
-
Journal exemple
instance_id:i-01 status:200 -
Instruction de requête et d'analyse
* | select 200 = ALL(select status where instance_id='i-01') Les résultats de la requête et de l'analyse indiquent _col0 comme false. Cela signifie que tous les journaux de l'instance « i-01 » n'ont pas un état 200.
-
Opérateur ANY
L'opérateur ANY compare une valeur x à un ensemble de valeurs renvoyées par une sous-requête. Il renvoie true si la comparaison est vraie pour au moins une valeur de l'ensemble.
-
Syntaxe
x relational operator ANY(subquery) -
Paramètres
Parameter
Description
x
Une expression de tout type de données comparable.
relational operator
<, >, <=, >=, =, <> ou !=
ImportantUn opérateur relationnel doit précéder l'opérateur
ANY.subquery
Une sous-requête qui renvoie une seule colonne de valeurs. Le type de données de la colonne doit correspondre au type de données de l'expression
x. -
Type de valeur de retour
boolean
-
Exemples
Vérifiez si au moins une requête pour l'instance
i-01possède un code d'état 200.-
Champs exemples
instance_id:i-01 status:200 -
Instruction de requête
* | SELECT 200 = ANY(SELECT status WHERE instance_id='i-01') La requête renvoie la colonne
_col0avec la valeurtrue, ce qui indique que la condition est remplie.
-
Opérateur BETWEEN
BETWEEN permet de déterminer si x se situe entre y et z. Si c'est le cas, il renvoie true. L'intervalle entre y et z est un intervalle fermé.
-
Syntaxe
x BETWEEN y AND z -
Paramètres
Parameter
Description
x
Une expression de tout type de données comparable.
y
Une expression de tout type de données comparable.
z
Une expression de tout type de données comparable.
ImportantLes types de données de x, y et z doivent être identiques.
Si la valeur de x, y ou z est null, le résultat est null.
-
Type de valeur de retour
Boolean
-
Exemples
-
Exemple 1 : vérifiez si la valeur du champ status se situe dans la plage [200, 299].
-
Instruction de requête
* | SELECT status BETWEEN 200 AND 299 Résultats de la requête et de l'analyse : la requête renvoie trois lignes dans la colonne
_col0, et la valeur de chaque ligne esttrue. Cela indique que la valeur du champ status de chaque journal correspondant se situe entre 200 et 299.
-
-
Exemple 2 : comptez les journaux dont la valeur du champ status ne se situe pas dans la plage [200, 299].
-
Instruction de requête
* | SELECT count(*) AS count FROM log WHERE status NOT BETWEEN 200 AND 299 Résultats de la requête et de l'analyse : la requête renvoie un count de 250.
-
-
Opérateur DISTINCT
L'opérateur DISTINCT compare deux valeurs, x et y, et gère correctement les valeurs NULL.
-
Syntaxe
-
IS DISTINCT FROM renvoie true si x est différent de y.
x IS DISTINCT FROM y -
IS NOT DISTINCT FROM renvoie true si x est égal à y.
x IS NOT DISTINCT FROM y
-
-
Paramètres
Parameter
Description
x
Une expression d'un type de données comparable.
y
Une expression d'un type de données comparable.
Contrairement aux opérateurs de base (= et <>), l'opérateur DISTINCT gère correctement les valeurs 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 |
-
Type de valeur de retour
Boolean.
-
Exemples
Comparez 0 à null.
-
Instruction de requête
* | select 0 IS DISTINCT FROM null Le résultat de la requête est
true, ce qui indique que 0 et null sont distincts.
-
Opérateur LIKE
L'opérateur LIKE vérifie si une chaîne de caractères correspond à un modèle spécifié. Cette opération est sensible à la casse.
-
Syntaxe
x LIKE pattern [escape 'escape_character'] -
Paramètres
Parameter
Description
x
Une expression de tout type de données comparable.
pattern
Le modèle de caractères à rechercher, qui peut inclure des chaînes et des caractères génériques. Les caractères génériques suivants sont pris en charge :
-
Signe pourcentage (%) : correspond à toute chaîne de zéro ou plusieurs caractères.
-
Trait de soulignement (_) : correspond à n'importe quel caractère unique.
escape_character
Un caractère utilisé pour échapper les caractères génériques dans le modèle de caractères.
RemarqueL'opérateur LIKE est principalement utilisé pour les requêtes de correspondance de modèles sur les journaux. Pour plus d'informations, consultez Comment effectuer une requête de correspondance exacte.
-
-
Type de valeur de retour
boolean
-
Exemples
SQL
-
Exemple 1 : interroge les journaux dont la valeur du champ request_uri se termine par file-8 ou file-6.
-
Champ d'exemple
request_uri:/request/path-2/file-6 -
Instruction de requête et d'analyse
*|SELECT * WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6' Résultats de la requête et de l'analyse : cette requête renvoie les enregistrements de journal où le champ
request_urise termine parfile-8oufile-6. Chaque enregistrement comprend des champs tels queremote_addr,remote_user,request_length,request_method,request_time,request_uri,scheme,server_protocol,slbid,statusettime_local.
-
-
Exemple 2 : vérifie si la valeur du champ request_uri se termine par file-6.
-
Champ d'exemple
request_uri:/request/path-2/file-6 -
Instruction de requête et d'analyse
* | SELECT request_uri LIKE '%file-6' La requête renvoie la colonne
_col0avec la valeurtrue. Cela indique que la valeur derequest_uricorrespond au modèle%file-6.
-
SPL
-
Exemple 1 : interroge les journaux dont la valeur du champ request_uri se termine par file-8 ou file-6.
Champ d'exemple
request_uri:/request/path-2/file-6Instruction SPL
*|WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6'Résultats SPL
La requête renvoie toutes les entrées de journal dont la valeur du champ request_uri se termine par file-8 ou file-6.
-
Exemple 2 : vérifie si la valeur du champ request_uri se termine par file-6.
Champ d'exemple
request_uri:/request/path-2/file-6Instruction SPL
* | extend a = request_uri LIKE '%file-6'Résultats SPL
Les résultats de la requête incluent un nouveau champ,
a, avec la valeurtrue. Cela indique que la valeur du champ request_uri dans l'entrée de journal se termine par file-6. -
Opérateur SOME
L'opérateur SOME compare une valeur x à l'ensemble des valeurs renvoyées par une sous-requête. L'opérateur renvoie true si la comparaison est vraie pour n'importe quelle valeur de l'ensemble.
-
Syntaxe
x relational operator SOME(subquery) -
Paramètres
Parameter
Description
x
Une expression de tout type de données comparable.
relational operator
<, >, <=, >=, =, <>, !=
ImportantL'opérateur
SOMEdoit suivre immédiatement un opérateur relationnel (<, >, <=, >=, =, <> ou !=).subquery
Une sous-requête qui renvoie une seule colonne de valeurs. Le type de données de la colonne doit être identique au type de données de l'expression x.
-
Type de valeur de retour
Type booléen.
-
Exemples
Vérifiez si une requête liée à l'instance
i-01a un temps de requête inférieur à 20 secondes.-
Champs d'exemple
instance_id:i-01 request_time:16 -
Instruction de requête
* | SELECT 20 > SOME(SELECT request_time WHERE instance_id='i-01') Résultats de la requête
-
Opérateur GREATEST
L'opérateur GREATEST renvoie la valeur maximale de x et y.
L'opérateur GREATEST est utilisé pour une comparaison horizontale, tandis que la fonction max est utilisée pour une comparaison verticale.
-
Syntaxe
GREATEST(x, y...) -
Paramètres
Parameter
Description
x
Une expression d'un type de données comparable.
y
Une expression d'un type de données comparable.
-
Type de valeur de retour
double
-
Exemples
Comparez les valeurs des champs request_time et status dans la même ligne pour trouver la valeur la plus élevée.
-
Champs d'exemple
request_time:38 status:200 -
Instruction de recherche et d'analyse
* | SELECT GREATEST(request_time,status) Les résultats de la requête et de l'analyse incluent la colonne
_col0avec la valeur200.0, qui est la plus grande entrerequest_time(38) etstatus(200).
-
Opérateur LEAST
L'opérateur LEAST renvoie la valeur minimale de x et y.
L'opérateur LEAST est utilisé pour une comparaison horizontale, tandis que la fonction min est utilisée pour une comparaison verticale.
-
Syntaxe
LEAST(x, y...) -
Paramètres
Parameter
Description
x
La valeur à comparer. Il peut s'agir de n'importe quel type de données comparable.
y
La valeur à comparer. Il peut s'agir de n'importe quel type de données comparable.
-
Type de valeur de retour
double -
Exemples
Comparez la valeur du champ request_time et la valeur du champ status dans la même ligne pour obtenir la valeur minimale.
-
Champs d'exemple
request_time:77 status:200 -
Instruction de requête et d'analyse
* | SELECT LEAST(request_time,status) -
Résultats de la requête et de l'analyse
La requête renvoie 77.
-
Opérateur Null
L'opérateur null vérifie si x est null.
-
Syntaxe
-
IS NULL : renvoie true si l'expression est null.
x IS NULL -
IS NOT NULL : renvoie true si l'expression n'est pas null.
x IS NOT NULL
-
-
Paramètres
Parameter
Description
x
Une expression de tout type de données comparable.
-
Type de valeur de retour
Type booléen.
-
Exemples
-
Exemple 1 : vérifie si la valeur du champ status est null.
-
Instruction de requête
* | select status IS NULL Résultats de la requête et de l'analyse : la requête renvoie la colonne
_col0. Les deux lignes contiennent la valeurfalse, ce qui indique que le champstatusn'est pas null.
-
-
Exemple 2 : compte les entrées de journal où le champ status n'est pas null.
-
Instruction de requête
* | SELECT count(*) AS count FROM log WHERE status IS NOT NULL Résultats de la requête et de l'analyse : la requête renvoie un count de
1340.
-
-