SQL 语法与示例
SQL 语法
FROM、SELECT 和 WHERE 子句
规则的 SQL 语句基本格式为:
SELECT <字段名> FROM <事件类型> [WHERE <条件>]
- FROM 子句将规则挂载到某个事件类型上,可多选
- SELECT 子句用于对数据进行变换,并选择出需要的字段
- WHERE 子句用于对 SELECT 选择出来的某个字段施加条件过滤
## SELECT 语句用于决定最终的输出结果里的字段。比如:
## 下面 SQL 的输出结果中将只有两个字段 "a" 和 "b":
SELECT a, b FROM "$EVENT.PUBLISH"
# 选取 username 为 'abc' 的建立连接消息,输出结果为所有可用字段:
SELECT * FROM "$EVENT.CONNECT" WHERE auth.username = 'abc'
## 选取 clientId 为 'abc' 的终端发来的消息,输出结果将只有 cid 一个字段。
SELECT clientId as cid FROM "$EVENT.PUBLISH" WHERE clientId = 'abc'
## 选取 qos 为 '1' 的发布消息,输出结果将只有 cid 一个字段。
## 注意虽然 SELECT 语句中只选取了 cid 一个字段,所有消息发布事件中的可用字段 (比如 clientId、topic 等) 仍然可以在 WHERE 语句中使用:
SELECT clientId as cid FROM "$EVENT.PUBLISH" WHERE qos = 1
## 但下面这个 SQL 语句就不能工作了,因为变量 xyz 不是消息发布事件中的可用字段:
SELECT clientId as cid FROM "$EVENT.PUBLISH" WHERE xyz = 'abc'
比较符号
函数名 | 函数作用 | 返回值 |
---|---|---|
> | 大于 | true/false |
< | 小于 | true/false |
<= | 小于等于 | true/false |
>= | 大于等于 | true/false |
<> | 不等于 | true/false |
!= | 不等于 | true/false |
= | 比较两者是否完全相等。可用于比较变量和主题 | true/false |
=~ | 比较主题(topic)是否能够匹配到主题过滤器(topic filter)。只能用于主题匹配 | true/false |