SQL 关键字和符号

SELECT - FROM - WHERE 语句

SELECT 语句用于决定最终的输出结果里的字段。比如:

下面 SQL 的输出结果中将只有两个字段 “a” 和 “b”:

  1. SELECT a, b FROM "t/#"

WHERE 语句用于对本事件中可用字段,或 SELECT 语句中定义的字段进行条件过滤。比如:

  1. # 选取 username 为 'abc' 的终端发来的消息,输出结果为所有可用字段:
  2. SELECT * FROM "#" WHERE username = 'abc'
  3. ## 选取 clientid 为 'abc' 的终端发来的消息,输出结果将只有 cid 一个字段。
  4. ## 注意 cid 变量是在 SELECT 语句中定义的,故可在 WHERE 语句中使用:
  5. SELECT clientid as cid FROM "#" WHERE cid = 'abc'
  6. ## 选取 username 为 'abc' 的终端发来的消息,输出结果将只有 cid 一个字段。
  7. ## 注意虽然 SELECT 语句中只选取了 cid 一个字段,所有消息发布事件中的可用字段 (比如 clientid, username 等) 仍然可以在 WHERE 语句中使用:
  8. SELECT clientid as cid FROM "#" WHERE username = 'abc'
  9. ## 但下面这个 SQL 语句就不能工作了,因为变量 xyz 既不是消息发布事件中的可用字段,又没有在 SELECT 语句中定义:
  10. SELECT clientid as cid FROM "#" WHERE xyz = 'abc'

FROM 语句用于选择事件来源。如果是消息发布则填写消息的主题,如果是事件则填写对应的事件主题。

运算符号

函数名函数作用返回值
+加法,或字符串拼接加和,或拼接之后的字符串
-减法差值
*乘法乘积
/除法商值
div整数除法整数商值
mod取模
=比较两者是否完全相等。可用于比较变量和主题true/false
=~比较主题(topic)是否能够匹配到主题过滤器(topic filter)。只能用于主题匹配true/false