繁体   English   中英

AWS IoT规则JSON密钥上的SQL查询以数字开头

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM