WHERE 子句
语法
SELECT_clause FROM_clause WHERE <conditional_expression> [(AND|OR) <conditional_expression> [...]]- conditional_expression:两个操作数之间的比较,其结果为
true或false。比较逻辑由表达式中使用的运算符确定。这些表达式可以作用于 InfluxDB 字段、标签和时间戳。使用逻辑运算符(AND、OR)将多个条件表达式链接在一起。
运算符
运算符评估两个操作数之间的关系并返回 true 或 false。
比较运算符
| 运算符 | 含义 | 支持的数据类型 |
|---|---|---|
= | 等于 | 全部 |
<> | 不等于 | 全部 |
!= | 不等于 | 全部 |
> | 大于 | 数值、时间戳 |
>= | 大于或等于 | 数值、时间戳 |
< | 小于 | 数值、时间戳 |
<= | 小于或等于 | 数值、时间戳 |
=~ | 匹配正则表达式 | 字符串 |
!~ | 不匹配正则表达式 | 字符串 |
逻辑运算符
| 运算符 | 含义 |
|---|---|
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 < 1688169600000000000WHERE
time >= now() - 1d
AND time < now()有关如何在 WHERE 子句中指定替代时间范围的信息,请参阅时间语法。
InfluxQL 不支持查询多个时间范围。
正则表达式
正则表达式可用于使用正则表达式比较运算符在 WHERE 子句中评估字符串值。
=~:匹配正则表达式!~:不匹配正则表达式
SELECT * FROM home WHERE room =~ /^K/有关 InfluxQL 正则表达式语法的更多信息,请参阅InfluxQL 正则表达式。
WHERE 子句示例
以下示例使用家庭传感器示例数据集。
注意事项
单引号和双引号
在 InfluxQL 中,单引号(')和双引号(")的用法不同,并且会影响 WHERE 子句的功能。单引号用于字符串和时间戳字面量。双引号用于引用标识符(time、field 和 tag 列名)。
例如,以下条件表达式将 location _列_的值与字符串字面量 London 进行比较。
"location" = 'London'以下条件表达式将 location _列_的值与 London _列_的值进行比较。
"location" = "London"在 WHERE 子句中错误地使用双引号和单引号通常会导致意外的空查询结果。有关引号的更多信息,请参阅InfluxQL 引号。
无法查询多个时间范围
InfluxDB 不支持在 WHERE 子句中使用 OR 来查询多个时间范围。例如,以下查询将返回 no results。
此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 InfluxDB 3 Core 和本文档提供反馈和错误报告。要获得支持,请使用以下资源
具有年度合同或支持合同的客户可以 联系 InfluxData 支持。