我想获取以“测试”一词开头的设备列表。 或者类似的方法,获取tags.email 以“test”开头的所有设备。 我已经阅读了文档,但根据我的发现,它仅支持完全匹配的查询,并且还支持少数运算符,例如(>,<,!=,<>等..)。
有人可以帮我解决这个问题吗? 我想要一些查询,例如,
从设备中选择 * WHERE deviceId LIKE 'test%';
或
从设备中选择 * WHERE STARTS_WITH(tags.email, 'test')
最佳答案
doc详细描述了用于在 IoT 中心查询设备的类似 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 和/或标签属性选择设备。
使用选项#2,可以使用以下示例:
SELECT deviceId, tags.email FROM devices WHERE is_defined(tags.email)
然后基于 LINQ,您可以在客户端完成查询。
关于c# - 使用字符串方法查询Iothub设备孪生标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63100670/