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 数据的任意一级,通过"." 操作符实现。示例如下:
SELECT a.b.c0 as value from "iot/thing/+"返回 Topic"iot/thing/+"内的a.b.c0信息即123。SELECT a.b.c2[1] as value from "iot/thing/+"返回 Topic"iot/thing/+"内的a.b.c2[1]信息即2。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 语句示例如下:
SELECT * FROM "iot/thing/hub"获取 Topic"iot/thing/hub"内的所有信息。SELECT * FROM "iot/thing/#"获取前两级 Topic 是"iot/thing"内的所有信息。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 属性值:
SELECT a.b.c0 FROM "iot/thing/" WHERE a.b.c3 = 123返回c0 = "JC"。SELECT a.b.c0 FROM "iot/thing/" WHERE a.b.c3 > 100返回c0 = "JC"。SELECT a.b.c0 FROM "iot/thing/" WHERE a.b.c3 in (123,11,22)返回c0 = "JC"。
WHERE 语句中支持内建的函数表达式。