Los operadores de comparación comparan valores de parámetros para tipos de datos comparables como double, bigint, varchar, timestamp y date. Este tema describe su sintaxis y proporciona ejemplos.
Operadores de comparación
Log Service admite los siguientes operadores de comparación.
Si desea utilizar cadenas en instrucciones analíticas, debe encerrarlas entre comillas simples (''). Las cadenas que no están encerradas o que están entre comillas dobles ("") indican nombres de campo o de columna. Por ejemplo,
'status'
indica la cadena status, mientras que
status
o
"status"
indican el campo de registro status.
|
Operador |
Sintaxis |
Descripción |
SQL |
SPL |
|
x < y |
Devuelve true si x es menor que y. |
√ |
√ |
|
|
x > y |
Devuelve true si x es mayor que y. |
√ |
√ |
|
|
x <= y |
Devuelve true si x es menor o igual que y. |
√ |
√ |
|
|
x >= y |
Devuelve true si x es mayor o igual que y. |
√ |
√ |
|
|
x = y |
Devuelve true si x es igual a y. |
√ |
√ |
|
|
x <> y |
Devuelve true si x no es igual a y. |
√ |
√ |
|
|
x != y |
Devuelve true si x no es igual a y. |
√ |
√ |
|
|
x operador relacional ALL(subconsulta) |
Devuelve true cuando x cumple todas las condiciones. |
√ |
× |
|
|
x operador relacional ANY(subconsulta) |
Devuelve true si x cumple alguna de las condiciones. |
√ |
× |
|
|
x BETWEEN y AND z |
Devuelve true si x está entre y y z, inclusive. |
√ |
√ |
|
|
x IS DISTINCT FROM y |
Devuelve true si x no es igual a y. A diferencia del operador <>, este operador devuelve false si tanto x como y son NULL. |
√ |
× |
|
|
x IS NOT DISTINCT FROM y |
Devuelve true si x es igual a y. A diferencia del operador =, este operador devuelve true si tanto x como y son NULL. |
√ |
× |
|
|
x LIKE patrón [escape 'carácter_de_escape'] |
Comprueba si una cadena coincide con el patrón especificado. Esta operación distingue entre mayúsculas y minúsculas. |
√ |
√ |
|
|
x operador relacional SOME(subconsulta) |
Devuelve true si x cumple alguna condición. |
√ |
× |
|
|
GREATEST(x, y...) |
Encuentra el valor máximo de x y y. |
√ |
× |
|
|
LEAST(x, y...) |
Encuentra el valor mínimo de x y y. |
√ |
× |
|
|
x IS NULL |
Devuelve true si x es NULL. |
√ |
√ |
|
|
x IS NOT NULL |
Devuelve true si x no es NULL. |
√ |
√ |
Operadores relacionales
Los operadores relacionales comparan los valores de x y y. Un operador devuelve true si se cumple su condición.
-
Sintaxis
Sintaxis
Descripción
x < y
Devuelve true si x es menor que y.
x > y
Devuelve true si x es mayor que y.
x <= y
Devuelve true si x es menor o igual que y.
x >= y
Devuelve true si x es mayor o igual que y.
x = y
Devuelve true si x es igual a y.
x <> y
Devuelve true si x no es igual a y.
x != y
Devuelve true si x no es igual a y.
-
Parámetros
Parámetro
Descripción
x
Una expresión de cualquier tipo de datos comparable.
y
Una expresión de cualquier tipo de datos comparable.
-
Tipo de valor devuelto
boolean
-
Ejemplos
-
Ejemplo 1: Consultar registros del día anterior.
-
Instrucción de consulta
* | SELECT * FROM log WHERE __time__ < to_unixtime(current_date) AND __time__ > to_unixtime(date_add('day', -1, current_date)) Resultados de la consulta: La consulta devuelve varios campos de registro, incluidos
body_bytes_sent,client_ip,host,http_user_agent,http_x_forwarded_for,instance_id,instance_name,network_type,owner_idyreferer. Estos campos proporcionan detalles para cada registro de acceso, como el tamaño del cuerpo de la solicitud, la dirección IP del cliente, el nombre de dominio accedido, el User-Agent, el ID de instancia, el nombre de la instancia y el tipo de red.
-
-
Ejemplo 2: Para encontrar clientes cuya ubicación de número telefónico difiere de la ubicación de su IP de acceso, una empresa de comercio electrónico consulta los campos mobile y client_ip en sus registros de acceso.
-
Valores de campo de muestra
mobile:1881111**** client_ip:192.168.2.0 -
Instrucción de consulta
* | 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 Resultados de la consulta: La consulta devuelve dos registros. La información sensible en las columnas
mobileyclient_ipestá enmascarada. Los valores correspondientes dePVson 13 y 12.
-
-
Operador ALL
El operador ALL compara un valor, x, con todos los valores en el conjunto de resultados de una subconsulta. Devuelve true si la comparación es verdadera para cada valor del conjunto.
-
Sintaxis
x relational operator ALL(subquery) -
Parámetros
Parámetro
Descripción
x
Un valor de cualquier tipo de datos comparable.
operador de comparación
<, >, <=, >=, =, <>, !=
ImportanteEl operador ALL debe seguir inmediatamente a un operador básico (<, >, <=, >=, =, <>, !=).
subconsulta
Una subconsulta SQL.
-
Tipo de valor devuelto
Tipo booleano.
-
Ejemplos
Este ejemplo comprueba si todas las solicitudes para la instancia 'i-01' tienen un código de estado 200.
-
Registro de muestra
instance_id:i-01 status:200 -
Instrucción de consulta y análisis
* | select 200 = ALL(select status where instance_id='i-01') Los resultados de la consulta y el análisis muestran _col0 como false. Esto significa que no todos los registros de la instancia 'i-01' tienen un estado de 200.
-
Operador ANY
El operador ANY compara un valor x con un conjunto de valores devueltos por una subconsulta. Devuelve true si la comparación es verdadera para al menos un valor del conjunto.
-
Sintaxis
x relational operator ANY(subquery) -
Parámetros
Parámetro
Descripción
x
Una expresión de cualquier tipo de datos comparable.
operador relacional
<, >, <=, >=, =, <>, o !=
ImportanteUn operador relacional debe preceder al operador
ANY.subconsulta
Una subconsulta que devuelve una sola columna de valores. El tipo de datos de la columna debe coincidir con el tipo de datos de la expresión
x. -
Tipo de valor devuelto
boolean
-
Ejemplos
Comprobar si alguna solicitud para la instancia
i-01tiene un código de estado 200.-
Campos de muestra
instance_id:i-01 status:200 -
Instrucción de consulta
* | SELECT 200 = ANY(SELECT status WHERE instance_id='i-01') La consulta devuelve la columna
_col0con un valor detrue, lo que indica que se cumple la condición.
-
Operador BETWEEN
BETWEEN se utiliza para determinar si x está entre y y z. Si es así, devuelve true. El rango entre y y z es un intervalo cerrado.
-
Sintaxis
x BETWEEN y AND z -
Parámetros
Parámetro
Descripción
x
Una expresión de cualquier tipo de datos comparable.
y
Una expresión de cualquier tipo de datos comparable.
z
Una expresión de cualquier tipo de datos comparable.
ImportanteLos tipos de datos de x, y y z deben ser iguales.
Si el valor de x, y o z es null, el resultado es null.
-
Tipo de valor devuelto
Boolean
-
Ejemplos
-
Ejemplo 1: Comprobar si el valor del campo status está dentro del rango [200, 299].
-
Instrucción de consulta
* | SELECT status BETWEEN 200 AND 299 Resultados de la consulta y el análisis: La consulta devuelve tres filas en la columna
_col0, y el valor en cada fila estrue. Esto indica que el valor del campo status para cada registro correspondiente está entre 200 y 299.
-
-
Ejemplo 2: Contar los registros donde el valor del campo status no está dentro del rango [200, 299].
-
Instrucción de consulta
* | SELECT count(*) AS count FROM log WHERE status NOT BETWEEN 200 AND 299 Resultados de la consulta y el análisis: La consulta devuelve un recuento de 250.
-
-
Operador DISTINCT
El operador DISTINCT compara dos valores, x y y, y maneja correctamente los valores NULL.
-
Sintaxis
-
IS DISTINCT FROM devuelve true si x no es igual a y.
x IS DISTINCT FROM y -
IS NOT DISTINCT FROM devuelve true si x es igual a y.
x IS NOT DISTINCT FROM y
-
-
Parámetros
Parámetro
Descripción
x
Una expresión de un tipo de datos comparable.
y
Una expresión de un tipo de datos comparable.
A diferencia de los operadores básicos (= y <>), el operador DISTINCT maneja correctamente los valores 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 |
-
Tipo de valor devuelto
Boolean.
-
Ejemplos
Comparar 0 con null.
-
Instrucción de consulta
* | select 0 IS DISTINCT FROM null El resultado de la consulta es
true, lo que indica que 0 y null son distintos.
-
Operador LIKE
El operador LIKE comprueba si una cadena coincide con un patrón de caracteres especificado. Esta operación distingue entre mayúsculas y minúsculas.
-
Sintaxis
x LIKE pattern [escape 'escape_character'] -
Parámetros
Parámetro
Descripción
x
Una expresión de cualquier tipo de datos comparable.
patrón
El patrón de caracteres que se va a buscar, que puede incluir cadenas y caracteres comodín. Se admiten los siguientes caracteres comodín:
-
Signo de porcentaje (%): Coincide con cualquier cadena de cero o más caracteres.
-
Guion bajo (_): Coincide con cualquier carácter individual.
carácter_de_escape
Un carácter utilizado para escapar caracteres comodín en el patrón de caracteres.
NotaEl operador LIKE se utiliza principalmente para consultas de coincidencia de patrones en registros. Para obtener más información, consulte How to perform an exact match query.
-
-
Tipo de valor devuelto
boolean
-
Ejemplos
SQL
-
Ejemplo 1: Consulta registros donde el valor del campo request_uri termina con file-8 o file-6.
-
Campo de muestra
request_uri:/request/path-2/file-6 -
Instrucción de consulta y análisis
*|SELECT * WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6' Resultados de la consulta y el análisis: Esta consulta devuelve registros donde el campo
request_uritermina confile-8ofile-6. Cada registro incluye campos comoremote_addr,remote_user,request_length,request_method,request_time,request_uri,scheme,server_protocol,slbid,statusytime_local.
-
-
Ejemplo 2: Comprobar si el valor del campo request_uri termina con file-6.
-
Campo de muestra
request_uri:/request/path-2/file-6 -
Instrucción de consulta y análisis
* | SELECT request_uri LIKE '%file-6' La consulta devuelve la columna
_col0con un valor detrue. Esto indica que el valor derequest_uricoincide con el patrón%file-6.
-
SPL
-
Ejemplo 1: Consulta registros donde el valor del campo request_uri termina con file-8 o file-6.
Campo de muestra
request_uri:/request/path-2/file-6Instrucción SPL
*|WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6'Resultados SPL
La consulta devuelve todas las entradas de registro donde el valor del campo request_uri termina con file-8 o file-6.
-
Ejemplo 2: Comprobar si el valor del campo request_uri termina con file-6.
Campo de muestra
request_uri:/request/path-2/file-6Instrucción SPL
* | extend a = request_uri LIKE '%file-6'Resultados SPL
Los resultados de la consulta incluyen un nuevo campo,
a, con un valor detrue. Esto indica que el valor del campo request_uri en la entrada de registro termina con file-6. -
Operador SOME
El operador SOME compara un valor x con el conjunto de valores devueltos por una subconsulta. El operador devuelve true si la comparación es verdadera para cualquier valor del conjunto.
-
Sintaxis
x relational operator SOME(subquery) -
Parámetros
Parámetro
Descripción
x
Una expresión de cualquier tipo de datos comparable.
operador relacional
<, >, <=, >=, =, <>, !=
ImportanteEl operador
SOMEdebe seguir inmediatamente a un operador relacional (<, >, <=, >=, =, <>, o !=).subconsulta
Una subconsulta que devuelve una sola columna de valores. El tipo de datos de la columna debe ser el mismo que el tipo de datos de la expresión x.
-
Tipo de valor devuelto
Tipo booleano.
-
Ejemplos
Comprobar si alguna solicitud relacionada con la instancia
i-01tiene un tiempo de solicitud menor a 20 segundos.-
Campos de muestra
instance_id:i-01 request_time:16 -
Instrucción de consulta
* | SELECT 20 > SOME(SELECT request_time WHERE instance_id='i-01') Resultados de la consulta
-
Operador GREATEST
El operador GREATEST devuelve el valor máximo de x y y.
El operador GREATEST se utiliza para comparaciones horizontales, mientras que la función max se utiliza para comparaciones verticales.
-
Sintaxis
GREATEST(x, y...) -
Parámetros
Parámetro
Descripción
x
Una expresión de un tipo de datos comparable.
y
Una expresión de un tipo de datos comparable.
-
Tipo de valor devuelto
double
-
Ejemplos
Compare los valores de los campos request_time y status en la misma fila para encontrar el valor más grande.
-
Campos de muestra
request_time:38 status:200 -
Instrucción de búsqueda y análisis
* | SELECT GREATEST(request_time,status) Los resultados de la consulta y el análisis incluyen la columna
_col0con un valor de200.0, que es el mayor entrerequest_time(38) ystatus(200).
-
Operador LEAST
El operador LEAST devuelve el valor mínimo de x y y.
El operador LEAST se utiliza para comparaciones horizontales, mientras que la función min se utiliza para comparaciones verticales.
-
Sintaxis
LEAST(x, y...) -
Parámetros
Parámetro
Descripción
x
El valor a comparar. Puede ser de cualquier tipo de datos comparable.
y
El valor a comparar. Puede ser de cualquier tipo de datos comparable.
-
Tipo de valor devuelto
double -
Ejemplos
Compare el valor del campo request_time y el valor del campo status en la misma fila para obtener el valor mínimo.
-
Campos de muestra
request_time:77 status:200 -
Instrucción de consulta y análisis
* | SELECT LEAST(request_time,status) -
Resultados de la consulta y el análisis
La consulta devuelve 77.
-
Operador nulo
El operador nulo comprueba si x es nulo.
-
Sintaxis
-
IS NULL: Devuelve verdadero si la expresión es nula.
x IS NULL -
IS NOT NULL: Devuelve verdadero si la expresión no es nula.
x IS NOT NULL
-
-
Parámetros
Parámetro
Descripción
x
Una expresión de cualquier tipo de datos comparable.
-
Tipo de valor devuelto
Tipo booleano.
-
Ejemplos
-
Ejemplo 1: Comprobar si el valor del campo status es nulo.
-
Instrucción de consulta
* | select status IS NULL Resultados de la consulta y el análisis: La consulta devuelve la columna
_col0. Ambas filas contienen el valorfalse, lo que indica que el campostatusno es nulo.
-
-
Ejemplo 2: Contar las entradas de registro donde el campo status no es nulo.
-
Instrucción de consulta
* | SELECT count(*) AS count FROM log WHERE status IS NOT NULL Resultados de la consulta y el análisis: La consulta devuelve un recuento de
1340.
-
-