我想获取以“测试”字开头的设备列表。或者类似的,获取 tags.email 以“test”开头的所有设备。我已经阅读了文档,但根据我的发现,它只支持完全匹配的查询,并且还支持少数运算符,如(>、<、!=、<> 等)。
谁能帮我这个?我想要一些查询,例如,
SELECT * from devices WHERE deviceId LIKE 'test%';
或者
SELECT * from devices WHERE STARTS_WITH(tags.email, 'test')
我想获取以“测试”字开头的设备列表。或者类似的,获取 tags.email 以“test”开头的所有设备。我已经阅读了文档,但根据我的发现,它只支持完全匹配的查询,并且还支持少数运算符,如(>、<、!=、<> 等)。
谁能帮我这个?我想要一些查询,例如,
SELECT * from devices WHERE deviceId LIKE 'test%';
或者
SELECT * from devices WHERE STARTS_WITH(tags.email, 'test')
文档中详细描述了用于在 IoT Hub 中查询设备的类似 SQL 语句集。IoT 中心当前不支持请求的查询,但是您可以通过一些选项来处理您的要求:
为每个设备添加tags属性,例如:
"tags": { "environment": "test" }
并根据tags.environment的值在 IoT Hub 端进行查询,例如:
SELECT deviceId FROM devices WHERE tags.environment IN ['test', 'dev']
SELECT deviceId FROM devices WHERE tags.environment NIN ['test']
此选项基于 IoT 中心的预查询设备,然后使用 LINQ 查询来获取查询的最终结果,例如根据您的情况:
SELECT deviceId, tags FROM devices
您还可以使用 WHERE 语句在预查询步骤中最小化设备集。
获得此预查询结果后,您可以使用 LINQ 丰富的语句根据 deviceId 和/或 tags 属性选择设备。
使用选项 #2,可以使用以下示例:
SELECT deviceId, tags.email FROM devices WHERE is_defined(tags.email)
然后基于 LINQ,您可以在客户端完成查询。