逻辑运算符

本文介绍逻辑运算符的基本语法及示例。

日志服务支持如下逻辑运算符。

重要
  • 在日志服务分析语句中,表示字符串的字符必须使用单引号('')包裹,无符号包裹或被双引号("")包裹的字符表示字段名或列名。例如:'status'表示字符串status,status"status"表示日志字段status。

  • 逻辑运算符优先级从高到低为not、and、or。您可以使用圆括号改变默认的计算顺序。

  • 逻辑运算只支持输入值为true、false或null的布尔表达式。

运算符

语法

说明

支持SQL

支持SPL

AND运算符

x AND y

xy的值都为true时,返回结果为true。

OR运算符

x OR y

xy中任意一个的值为true时,返回结果为true。

NOT运算符

NOT x

x的值为false时,返回结果为true。

AND运算符

xy的值都为true时,返回结果为true。

语法

x AND y 

参数说明

参数

说明

x

参数值为布尔表达式。

y

参数值为布尔表达式。

返回值类型

boolean类型。

示例

SQL

如果status字段值为200且request_method字段值为GET,则返回true。否则返回false。

  • 查询和分析语句

    *|SELECT status=200 AND request_method='GET'
  • 查询和分析结果AND运算符

SPL

如果status字段值为200且request_method字段值为GET,则返回true。否则返回false。

  • SPL语句

*|extend a = status=200 AND request_method='GET'
  • SPL结果image.png

OR运算符

xy中任意一个的值为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'
  • 查询和分析结果OR

SPL

查找request_uri字段值是以file-8或file-6的结尾的日志。

  • SPL语句

*|WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6'
  • SPL结果image.png

NOT运算符

x的值为false时,返回结果为true。

语法

 NOT x 

参数说明

参数

说明

x

参数值为布尔表达式。

返回值类型

boolean类型。

示例

SQL

统计请求状态码不为200时的请求时长。

  • 查询和分析语句

    *|SELECT request_time WHERE NOT status=200
  • 查询和分析结果NOT

SPL

查询请求状态码不为200时的日志信息。

  • SPL语句

*|WHERE NOT status=200
  • SPL结果image.png

附录:真值表

xy的值为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