本文介绍逻辑运算符的基本语法及示例。
日志服务支持如下逻辑运算符。
-
在日志服务分析语句中,表示字符串的字符必须使用单引号('')包裹,无符号包裹或被双引号("")包裹的字符表示字段名或列名。例如:'status'表示字符串status,status或"status"表示日志字段status。
-
逻辑运算符优先级从高到低为not、and、or。您可以使用圆括号改变默认的计算顺序。
-
逻辑运算只支持输入值为true、false或null的布尔表达式。
|
运算符 |
语法 |
说明 |
支持SQL |
支持SPL |
|
x AND y |
x和y的值都为true时,返回结果为true。 |
√ |
√ |
|
|
x OR y |
x和y中任意一个的值为true时,返回结果为true。 |
√ |
√ |
|
|
NOT x |
x的值为false时,返回结果为true。 |
√ |
√ |
AND运算符
x和y的值都为true时,返回结果为true。
语法
x AND y
参数说明
|
参数 |
说明 |
|
x |
参数值为布尔表达式。 |
|
y |
参数值为布尔表达式。 |
返回值类型
boolean类型。
示例
SQL
如果status字段值为200且request_method字段值为GET,则返回true。否则返回false。
-
查询和分析语句
*|SELECT status=200 AND request_method='GET' -
查询和分析结果返回
_col0列,包含布尔值true和false,分别表示日志是否同时满足status=200且request_method='GET'的条件。
SPL
如果status字段值为200且request_method字段值为GET,则返回true。否则返回false。
-
SPL语句
*|extend a = status=200 AND request_method='GET'
-
SPL结果
a: true
OR运算符
x和y中任意一个的值为true时,返回结果为true。
语法
x OR y
参数说明
|
参数 |
说明 |
|
x |
参数值为布尔表达式。 |
|
y |
参数值为布尔表达式。 |
返回值类型
boolean类型。
示例
SQL
查找request_uri字段值是以file-8或file-6的结尾的日志。
-
查询和分析语句
*|SELECT * WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6' -
查询和分析结果:查询结果返回两条记录,包含
remote_addr、remote_user、request_length、request_method、request_time、request_uri、scheme、server_protocol、slbid、status、time_local等字段。两条记录的request_uri分别为/request/path-2/file-6和/request/path-0/file-6,请求方法分别为 DELETE 和 PUT,状态码均为 200。
SPL
查找request_uri字段值是以file-8或file-6的结尾的日志。
-
SPL语句
*|WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6'
-
SPL结果:查询结果返回两条日志,其
request_uri字段值均为/request/path-2/file-6,符合以 file-6 结尾的筛选条件。
NOT运算符
x的值为false时,返回结果为true。
语法
NOT x
参数说明
|
参数 |
说明 |
|
x |
参数值为布尔表达式。 |
返回值类型
boolean类型。
示例
SQL
统计请求状态码不为200时的请求时长。
-
查询和分析语句
*|SELECT request_time WHERE NOT status=200 -
查询和分析结果:查询结果返回
request_time字段值,示例结果为 53.0、24.0、56.0、32.0。
SPL
查询请求状态码不为200时的日志信息。
-
SPL语句
*|WHERE NOT status=200
-
SPL结果:执行该SPL语句后,查询结果返回状态码非200的日志条目,例如日志中
status字段值为500,request_uri字段值为/request/path-2/file-6。
附录:真值表
x和y的值为true、false或null时,真值表如下所示。
|
x |
y |
x AND y |
x OR y |
NOT x |
|
true |
true |
true |
true |
false |
|
true |
false |
false |
true |
false |
|
true |
null |
null |
true |
false |
|
false |
true |
false |
true |
true |
|
false |
false |
false |
false |
true |
|
false |
null |
false |
null |
true |
|
null |
true |
null |
true |
null |
|
null |
false |
false |
null |
null |
|
null |
null |
null |
null |
null |