文档文档

WHERE 子句

使用 WHERE 子句根据字段值标签值时间戳筛选数据。

语法

SELECT_clause FROM_clause WHERE <conditional_expression> [(AND|OR) <conditional_expression> [...]]
  • conditional_expression:两个操作数之间的比较,结果为 truefalse。比较逻辑由表达式中使用的运算符确定。这些表达式可以对 InfluxDB 字段、标签和时间戳进行操作。使用逻辑运算符 (AND, OR) 将多个条件表达式链接在一起。

运算符

运算符评估两个操作数之间的关系,并返回 truefalse

比较运算符

运算符含义支持的数据类型
=Equal toall
<>Not equal toall
!=Not equal toall
>Greater thannumeric, timestamp
>=Greater than or equal tonumeric, timestamp
<Less thannumeric, timestamp
<=Less than or equal tonumeric, timestamp
=~Matches a regular expressionstrings
!~Doesn’t match a regular expressionstrings

逻辑运算符

运算符含义
AND如果两个操作数都为 true,则返回 true。否则,返回 false
OR如果任何操作数为 true,则返回 true。否则,返回 false

时间范围

使用 WHERE 子句指定要查询的时间范围。如果未在 WHERE 子句中指定时间范围,则使用默认时间范围

时间戳存储在 time 列中。使用比较运算符将 time 列的值与时间戳字面量、整数 (Unix 纳秒时间戳) 或表达式进行比较。

WHERE
  time >= '2023-01-01T00:00:00Z'
  AND time < '2023-07-01T00:00:00Z'
WHERE
  time >= 1672531200000000000
  AND time < 1688169600000000000
WHERE
  time >= now() - 1d
  AND time < now()

有关如何在 WHERE 子句中指定替代时间范围的信息,请参阅时间语法

正则表达式函数

正则表达式可用于使用正则表达式比较运算符评估 WHERE 子句中的字符串

  • =~:匹配正则表达式
  • !~:不匹配正则表达式
SELECT * FROM home WHERE room =~ /^K/

有关 InfluxQL 正则表达式语法的更多信息,请参阅InfluxQL 正则表达式

WHERE 子句示例

以下示例使用家庭传感器示例数据集

选择具有特定标签值的数据

从特定时间范围选择数据

从相对时间范围选择数据

选择高于阈值的字段值

选择特定字段值

基于算术选择字段值

选择字段值高于阈值且具有特定标签值的数据

根据列之间的关系选择数据

值得注意的行为

单引号和双引号

在 InfluxQL 中,单引号 (') 和双引号 (") 的工作方式不同,可能会改变 WHERE 子句的功能。单引号用于字符串时间戳字面量。双引号用于引用标识符(时间、字段和标签列名)。

例如,以下条件表达式将 location的值与字面字符串 London 进行比较

"location" = 'London'

以下条件表达式将 location的值与 London的值进行比较

"location" = "London"

WHERE 子句中错误使用双引号和单引号通常会导致意外的空查询结果。有关引号的更多信息,请参阅InfluxQL 引用

无法查询多个时间范围

InfluxDB 不支持在 WHERE 子句中使用 OR 来查询多个时间范围。例如,以下查询不返回任何结果

SELECT *
FROM home
WHERE
  (time >= '2022-01-01T08:00:00Z' AND time <= '2022-01-01T10:00:00Z')
  OR (time >= '2022-01-01T18:00:00Z' AND time <= '2022-01-01T20:00:00Z')

此页面是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像现在这样使用它,无需对代码进行任何更改。

阅读更多

InfluxDB 3 开源版现已公开发布 Alpha 版

InfluxDB 3 开源版现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 Alpha 版的一部分。

InfluxDB 3 Core 是我们新的开源产品。它是一个用于时间序列和事件数据的最新数据引擎。InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询功能、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何开始使用的更多信息,请查看