簡體   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