WHERE 子句
语法
SELECT_clause FROM_clause WHERE <conditional_expression> [(AND|OR) <conditional_expression> [...]]
- conditional_expression:两个操作数之间的比较,结果为
true
或false
。比较逻辑由表达式中使用的运算符确定。这些表达式可以对 InfluxDB 字段、标签和时间戳进行操作。使用逻辑运算符 (AND
,OR
) 将多个条件表达式链接在一起。
运算符
运算符评估两个操作数之间的关系,并返回 true
或 false
。
比较运算符
运算符 | 含义 | 支持的数据类型 |
---|---|---|
= | Equal to | all |
<> | Not equal to | all |
!= | Not equal to | all |
> | Greater than | numeric, timestamp |
>= | Greater than or equal to | numeric, timestamp |
< | Less than | numeric, timestamp |
<= | Less than or equal to | numeric, timestamp |
=~ | Matches a regular expression | strings |
!~ | Doesn’t match a regular expression | strings |
逻辑运算符
运算符 | 含义 |
---|---|
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
子句中指定替代时间范围的信息,请参阅时间语法。
InfluxQL 不支持查询多个时间范围。
正则表达式函数
正则表达式可用于使用正则表达式比较运算符评估 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
来查询多个时间范围。例如,以下查询不返回任何结果
此页面是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB Clustered 和本文档的反馈和错误报告。要获得支持,请使用以下资源
拥有年度合同或支持合同的客户可以联系 InfluxData 支持。