如何在查询和分析语句中使用引号?

使用查询分析语句查询日志时,在一些情况下需要添加引号,例如字段名、表名等专有名词中存在空格。本文介绍如何在查询分析语句中使用引号。

在查询语句中使用引号

说明

当字段名或字段值中存在特殊字符(空格、中文等)、语法关键词(and、or等)等内容时,需要使用双引号("")包裹。查询语法的说明和更多示例,请参见查询语法

示例

  • 查询request method字段值中包含PUT的日志。字段名request method中存在空格,需使用双引号("")包裹。

    "request method":PUT
  • 查询remote_user字段值为空的日志。

    remote_user:""
  • 查询region字段值包含cn*的日志。

    这里的cn*为一个字符串。如果日志内容为region:cn*,en,分词符为半角逗号(,),则该日志内容被拆分为regioncn*en,你可以通过下述语句查询到该日志。

    region:"cn*"

在分析语句(SELECT语句)中使用引号

说明

  • 当字段名、表名等专有名词中存在特殊字符(空格、中文等)、语法关键词(and、or等)等内容时,需要使用双引号("")包裹。

  • 表示字符串的字符必须使用单引号('')包裹,无符号包裹或被双引号("")包裹的字符表示字段名或列名。例如:'status'表示字符串status,status"status"表示日志字段status。

示例

  • 计算请求时长的前10名。

    列名top 10中存在空格,需使用双引号("")包裹。

    * | SELECT max(request_time,10) AS "top 10"
  • 查询包含192.168.XX.XX的日志。

    * | select * from log where key like '192.168.%.%'
  • 统计不同请求状态对应的日志数量。

    此处content字段的索引为JSON类型。更多信息,请参见如何查询和分析有索引的JSON字段

    * | SELECT "content.status", COUNT(*) AS PV GROUP BY "content.status"