SELECT 语句操作

Topic 下样本数据:

{
    "a": {
        "b": {
            "c0": 123, 
            "c1": "2015-10-12 12:23:58", 
            "c2": [1,2,3,4,5,6,7,8], 
            "c3": [{"1":1},{"2":2}]
       }
   }
}

SELECT 语句的基本格式为:SELECT object as object-name,object 可以指定为 JSON 数据的任意一级,通过"." 操作符实现。示例如下:

  1. SELECT a.b.c0 as value from "iot/thing/+" 返回 Topic "iot/thing/+" 内的 a.b.c0 信息即123
  2. SELECT a.b.c2[1] as value from "iot/thing/+" 返回 Topic "iot/thing/+" 内的 a.b.c2[1] 信息即 2
  3. SELECT a.b.c3[*] as value from "iot/thing/+" 返回 Topic "iot/thing/+" 内的 a.b.c3[*] 信息即 [{"1":1},{"2":2}]

FROM 语句

传统的 SQL 语句中 FROM 指的是从表中获取信息,而在 IoT SQL 中 FROM 指的是从设备的 Topic 中获取信息。

设备的 Topic 最多有八个斜杠也就是九级,设备的 Topic 中可以使用通配符。

Topic 下样本数据:

{
    "a": {
        "b": {
            "c0": 123, 
            "c1": "2015-10-12 12:23:58", 
            "c2": [1,2,3,4,5,6,7,8], 
            "c3": [{"1":1},{"2":2}]
        }
    }
}

FROM 语句示例如下:

  1. SELECT * FROM "iot/thing/hub" 获取 Topic "iot/thing/hub" 内的所有信息。
  2. SELECT * FROM "iot/thing/#" 获取前两级 Topic 是"iot/thing" 内的所有信息。
  3. SELECT a.b.c0 FROM "iot/thing/hub" 获取 Topic "iot/thing/hub"a.b.c0 的信息。

WHERE 语句

在执行 SELECT 语句的时候,WHERE 语句可以过滤出指定的 JSON 属性值。

Topic 下样本数据:

{
    "a": {
        "b": {
            "c0": "JC", 
            "c1": "Jc", 
            "c2": {
                "a": {
                    "b": {
                        "c0": "aaa", 
                        "c1": "JD1111111111", 
                        "c2": [1,2,3,4,5,6], 
                        "c3": [{"1":1},{"2":2}]
                    }
                }
            }, 
            "c3": 123
        }
    }
}

通过如下 WHERE 语句可以过滤出符合条件的 JSON 属性值:

  1. SELECT a.b.c0 FROM "iot/thing/" WHERE a.b.c3 = 123 返回 c0 = "JC"
  2. SELECT a.b.c0 FROM "iot/thing/" WHERE a.b.c3 > 100 返回 c0 = "JC"
  3. SELECT a.b.c0 FROM "iot/thing/" WHERE a.b.c3 in (123,11,22)返回 c0 = "JC"

WHERE 语句中支持内建的函数表达式。

results matching ""

    No results matching ""