逻辑运算符

更新时间:
复制为 MD 格式

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

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

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

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

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

运算符

语法

说明

支持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字段值为200request_method字段值为GET,则返回true。否则返回false。

  • 查询和分析语句

    *|SELECT status=200 AND request_method='GET'
  • 查询和分析结果返回 _col0 列,包含布尔值 truefalse,分别表示日志是否同时满足 status=200request_method='GET' 的条件。

SPL

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

  • SPL语句

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

    a: true

OR运算符

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

语法

x OR y 

参数说明

参数

说明

x

参数值为布尔表达式。

y

参数值为布尔表达式。

返回值类型

boolean类型。

示例

SQL

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

  • 查询和分析语句

    *|SELECT *  WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6'
  • 查询和分析结果:查询结果返回两条记录,包含 remote_addrremote_userrequest_lengthrequest_methodrequest_timerequest_urischemeserver_protocolslbidstatustime_local 等字段。两条记录的 request_uri 分别为 /request/path-2/file-6/request/path-0/file-6,请求方法分别为 DELETE 和 PUT,状态码均为 200。

SPL

查找request_uri字段值是以file-8file-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 字段值为 500request_uri 字段值为 /request/path-2/file-6

附录:真值表

xy的值为true、falsenull时,真值表如下所示。

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