[英]SQL Query on AWS IoT Rule JSON key starts with number
我已经呆了几个小时了,无法弄清楚。 所以我想也许这里有人会想到一个主意。
我有正在发布到事物阴影的JSON(要发布的JSON格式不受我的控制)。 JSON如下所示:
{"state":{"reported":{"0013A20011223344":{"input_1":1}}}}
我尝试了以下查询语句,该语句将用于向SNS发送发布:
SELECT "input closed" AS default FROM "$aws/things/Cell_Test_Thing/shadow/update" WHERE state.reported.0013A200418C5535.input_1 = 1
问题是SQL查询不喜欢以0开头的键。我通过将0013 ...替换为此处的设备来确定了这一点,它工作得很好:
SELECT "input closed" AS default FROM "$aws/things/Cell_Test_Thing/shadow/update" WHERE state.reported.device.input_1 = 1
因此,问题在于JSON密钥以数字开头。 如果我将设备更改为device0,则可以使用,但是如果将其更改为0device,则它将失败。 根据我的判断,以数字开头的JSON密钥完全有效,因此希望可以解决此问题。
有想法吗?
尝试这个:
SELECT "input closed" AS default
FROM "$aws/things/Cell_Test_Thing/shadow/update"
WHERE "state"."reported"."0013A200418C5535"."input_1" = 1
名称的每个部分都必须用引号引起来。 这是因为名称具有四个部分的结构。
为什么不能只使用一组引号? 这样想吧。 由四部分组成的名称"state"."reported"."0013A200418C5535"."input_1"
具有四部分,以点分隔。 但是,如果其中一个部分中有一个点怎么办?
(从技术上讲,只需要引用包含某些字符的部分,但有时仅将它们全部引用会更容易)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.