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