本文介绍逻辑运算符的基本语法及示例。
日志服务支持如下逻辑运算符。
在日志服务分析语句中,表示字符串的字符必须使用单引号('')包裹,无符号包裹或被双引号("")包裹的字符表示字段名或列名。例如:'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'
查询和分析结果
SPL
如果status字段值为200且request_method字段值为GET,则返回true。否则返回false。
SPL语句
*|extend a = status=200 AND request_method='GET'
SPL结果
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'
查询和分析结果
SPL
查找request_uri字段值是以file-8或file-6的结尾的日志。
SPL语句
*|WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6'
SPL结果
NOT运算符
x的值为false时,返回结果为true。
语法
NOT x
参数说明
参数 | 说明 |
x | 参数值为布尔表达式。 |
返回值类型
boolean类型。
示例
SQL
统计请求状态码不为200时的请求时长。
查询和分析语句
*|SELECT request_time WHERE NOT status=200
查询和分析结果
SPL
查询请求状态码不为200时的日志信息。
SPL语句
*|WHERE NOT status=200
SPL结果
附录:真值表
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 |